2010-11-04 92 views
0

我想添加一個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聲明瞭兩個屬性,但它給對象引用錯誤。

謝謝,

回答

0

你必須攔截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 
    } 
}