在asp.net中添加WebUserControl到Gridview

问题描述:

我想添加一个webusercontol,它包含一个文本框和一个标签到gridview控件。我使用动态数据表绑定GridView。在asp.net中添加WebUserControl到Gridview

这里是我的代码:

@ Register Src="CompareBox.ascx" TagName="CompareBox" TagPrefix="objCompareBox" %><br> 
<asp:GridView ID="grdfoneBoxContainer" runat="server"> 
     <Columns><br> 
       <asp:TemplateField HeaderText="User control"> <br> 
        <ItemTemplate><br> 
         <objCompareBox:CompareBox ID="CompareBoxCol1" runat="server"/><br> 
        </ItemTemplate><br> 
       </asp:TemplateField><br> 
     </Columns><br> 
</asp:GridView><br> 

    DataTable dt = new DataTable(); 
    dt.Columns.Add("uc1"); 
    dt.Columns.Add("uc2"); 
    dt.Columns.Add("uc3"); 
    dt.Columns.Add("uc4"); 

    CompareBox objCompareBox = new CompareBox(); 
    objCompareBox.txt= "World"; 
    objCompareBox.lbl = "Hello"; 

    dt.Rows.Add(objCompareBox, objCompareBox, objCompareBox, objCompareBox); 
    dt.Rows.Add(objCompareBox, objCompareBox, objCompareBox, objCompareBox); 
    dt.Rows.Add(objCompareBox, objCompareBox, objCompareBox, objCompareBox); 
    dt.Rows.Add(objCompareBox, objCompareBox, objCompareBox, objCompareBox); 


    grdfoneBoxContainer.DataSource = dt; 
    grdfoneBoxContainer.DataBind(); 

TXT & LBL是在WebUserControl声明了两个属性,但它给对象引用错误。

谢谢,

你必须拦截RowDataBound事件中的那个对象。

在您调用grdfoneBoxContainer.DataBind();如果编写和处理程序事件的RowDataBound:

保护无效grdfoneBoxContainer_RowDataBound(对象发件人,GridViewRowEventArgs E) { 如果(e.Row.RowType == DataControlRowType.DataRow) { CompareBox compareBox =(CompareBox)在线.Row.FindControl( “CompareBoxCol1”);

 //here you have a reference to your control 
    } 
}