<asp:Repeater runat="server" OnItemDataBound="companylist_ItemDataBound" > <ItemTemplate> <table width="576" border="0" cellspacing="0" cellpadding="0"> <tr> <td background="../member/i/member_06.gif"> <table width="576" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="441"> <table width="100%" border="0" cellspacing="5" cellpadding="0"> <tr> <td width="100"><font color="#FF0000"><strong>[<asp:Label runat="server" Text=""></asp:Label>] </strong></font></td> <td align="left" width="250"><a href= "CompanyDetail.aspx?CompanyID=<%#Eval("Company_ID") %>&temp_name=<%#Eval("Template_3") %>"><%#Eval("CompanyName")%></a></td> <td> <%#Eval("CompanyCity")%></td> <td></td> </tr> <tr> <td colspan="4"><%# GetCutTitle(HtmlCoder(Convert.ToString(Eval("CompanyComment"))))%></td> </tr> </table> </td> <td width="135"><div align="center"></div></td> </tr> </table> </td> </tr> </table> </ItemTemplate> </asp:Repeater>
在后置代码里是这样写的
protected void companylist_ItemDataBound(object sender, RepeaterItemEventArgs e) {
string cnstr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; SqlConnection cn0 = new SqlConnection(cnstr); cn0.Open(); if (!string.IsNullOrEmpty(Convert.ToString(DataBinder.Eval(e.Item.DataItem, "CompanyClass_3")))) { string mysql = "SELECT * FROM T_CompanyClass_3 WHERE CompanyClass_ID='" + DataBinder.Eval(e.Item.DataItem, "CompanyClass_3") + "'"; SqlCommand cm0 = new SqlCommand(mysql, cn0); SqlDataReader dr = cm0.ExecuteReader(); if (dr.Read()) { Label myLabel = (Label)e.Item.FindControl("myLabel"); myLabel.Text = Convert.ToString(dr["name"]); } } else { Label myLabel = (Label)e.Item.FindControl("myLabel"); myLabel.Text = "无"; } }
各位注意看哦.在前置代码里,我们在VS2005里一般写为 Eval(“companyclass_3”)但是在二次绑定的时候,我们用的是DataBinder.Eval(e.Item.DataItem, "CompanyClass_3")
还有就是,平时我们对lable控件付值是用lable.text=fsf;形式就可以了,但是在这里,我们采用的是
Label myLabel = (Label)e.Item.FindControl("myLabel"); myLabel.Text = Convert.ToString(dr["name"]);
,我要去查下为什么这么写哦.有知道的告诉偶一声也可以哦
