大家都知道一般的数据绑定是用<%#Eval("绑定字段")%>,那么如果要在里面嵌入for循环呢?现在要实现的功能是从数据库里取出int类型的星级(Star)字段,然后用for循环“画”出几颗星,三星级就用for画3个,五星级就画5个。现在我aspx里是这样写的:<asp:Literal ID="litStar" runat="server"></asp:Literal>
<%
for (int i = 0; i < (int)Eval("Star"); i++)
{
litStar.Text += "<img src='img/star.gif' alt='' />";
}
%>但它会报措说:
Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。如果写成:<asp:Literal ID="litStar" runat="server"></asp:Literal>
<%
for (int i = 0; i < (int)(DataBinder.Eval(DataList1, "Star")); i++)
{
litStar.Text += "<img src='img/star.gif' alt='' />";
}
%>会报措说:
DataBinding:“System.Web.UI.WebControls.DataList”不包含名为“Star”的属性。
其中Eval的第一个参数的容器应该是什么?第二个参数是指向绑定字段吗?如果<%写成<%#,程序就不认识for关键字了,如果把#号写在Eval前面,for语句也是错误的
<%
for (int i = 0; i < (int)Eval("Star"); i++)
{
litStar.Text += "<img src='img/star.gif' alt='' />";
}
%>但它会报措说:
Eval()、XPath() 和 Bind() 这类数据绑定方法只能在数据绑定控件的上下文中使用。如果写成:<asp:Literal ID="litStar" runat="server"></asp:Literal>
<%
for (int i = 0; i < (int)(DataBinder.Eval(DataList1, "Star")); i++)
{
litStar.Text += "<img src='img/star.gif' alt='' />";
}
%>会报措说:
DataBinding:“System.Web.UI.WebControls.DataList”不包含名为“Star”的属性。
其中Eval的第一个参数的容器应该是什么?第二个参数是指向绑定字段吗?如果<%写成<%#,程序就不认识for关键字了,如果把#号写在Eval前面,for语句也是错误的
在.aspx文件中调用这个方法啊
SqlParameter[] p ={
new SqlParameter("@hotelID",Convert.ToInt32(Request.QueryString["hotelID"].ToString()))
};
SqlDataReader dr = data.ExecReader(sql, p);
if (dr.HasRows)
{
dr.Read();
labHotelName.Text = dr["hotelName"].ToString();
labAddress.Text = dr["address"].ToString();
string sStar = dr["starLevel"].ToString();
if (sStar.IndexOf("五") >= 0 || sStar.IndexOf("5") >= 0) ShowStars(5);
else if (sStar.IndexOf("四") >= 0 ||sStar.IndexOf("4") >=0) ShowStars(4);
else if (sStar.IndexOf("三") >= 0 || sStar.IndexOf("3") >= 0) ShowStars(3);
else if (sStar.IndexOf("二") >= 0 || sStar.IndexOf("2") >= 0) ShowStars(2);
else if (sStar.IndexOf("一") >= 0 || sStar.IndexOf("1") >= 0) ShowStars(1);
else ShowStars(0);
dr.Close();
}
void ShowStars(int count)
{
xing1.Visible = false;
xing2.Visible = false;
xing3.Visible = false;
xing4.Visible = false;
xing5.Visible = false;
if (count >= 1) xing1.Visible = true;
if (count >= 2) xing2.Visible = true;
if (count >= 3) xing3.Visible = true;
if (count >= 4) xing4.Visible = true;
if (count >= 5) xing5.Visible = true;
}