<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"]);
,我要去查下为什么这么写哦.有知道的告诉偶一声也可以哦