repeater的双重绑定

    技术2022-05-11  72

    前天,我做企业列表的时候遇到了难题,因为在企业的company表里,类别只是一个typeid,我必须要通过companytype表里的读取类别的名字.我在数据绑定的时候用的是repeater.在绑定以后还需要对类别进行二次绑定.遇到一些问题,就是在repeater里

     <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"]);

    ,我要去查下为什么这么写哦.有知道的告诉偶一声也可以哦

     

    最新回复(0)