C# 将WebUserControl添加到asp.net中的Gridview

C# 将WebUserControl添加到asp.net中的Gridview,c#,asp.net,C#,Asp.net,我想向gridview控件添加一个WebUserControl,它包含一个文本框和一个标签。我将gridview与datatable动态绑定 这是我的密码: @ Register Src="CompareBox.ascx" TagName="CompareBox" TagPrefix="objCompareBox" %><br> <asp:GridView ID="grdfoneBoxContainer" runat="server"> <C

我想向gridview控件添加一个WebUserControl,它包含一个文本框和一个标签。我将gridview与datatable动态绑定

这是我的密码:

@ 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();
@Register Src=“CompareBox.ascx”TagName=“CompareBox”TagPrefix=“objCompareBox”%>








DataTable dt=新的DataTable(); dt.列添加(“uc1”); dt.列添加(“uc2”); dt.列添加(“uc3”); dt.列添加(“uc4”); CompareBox objCompareBox=新的CompareBox(); objCompareBox.txt=“世界”; objCompareBox.lbl=“你好”; 添加(objCompareBox,objCompareBox,objCompareBox,objCompareBox); 添加(objCompareBox,objCompareBox,objCompareBox,objCompareBox); 添加(objCompareBox,objCompareBox,objCompareBox,objCompareBox); 添加(objCompareBox,objCompareBox,objCompareBox,objCompareBox); grdfoneBoxContainer.DataSource=dt; grdfoneBoxContainer.DataBind();
txt和lbl是WebUserControl中声明的两个属性,但它给出了对象引用错误


谢谢,

您必须在RowDataBound事件中拦截该对象

调用grdfoneBoxContainer.DataBind()之后;如果为RowDataBound事件编写和处理程序:

受保护的void grdfoneBoxContainer_RowDataBound(对象发送方,GridViewRowEventArgs e) { if(e.Row.RowType==DataControlRowType.DataRow) { CompareBox CompareBox=(CompareBox)e.Row.FindControl(“CompareBoxCol1”)

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