2012-09-01 79 views
0

我有一個名爲ActivityGrid的用戶控件,它將一個對象列表作爲其構造函數中的參數。將參數傳遞給綁定到gridview的用戶控件

public ActivityGrid(List<clsActivityRow> ActivityData) 
{ 
    bindData(ActivityData); 
} 

我需要在一個名爲parentGrid的gridView中綁定這個用戶控件,所以我使用了Templatefield。

<asp:GridView ID="GridViewParent" runat="server" AutoGenerateColumns ="False"> 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
     <tr> 
      <td colspan="100%"> 
       <uc1:ActivityGrid ID="ActivityGrid1" runat="server" /> 
      </td> 
     </tr> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 
</asp:GridView> 

如何傳遞對象的名單在該用戶的控制,同時勢必一個gridview裏面 ?

我在後面的代碼中準備好了對象列表List<clsActivityRow> ActivityData

+0

用戶控件不應該有帶參數/使用構造函數。它不適合WebForms模型。 – 2012-09-01 07:43:26

回答

0

你需要找到ActivityGrid1 object每一行的GridViewParent在其RowDataBound事件並分配datasource

protected void GridViewParent_RowDataBound(Object sender, GridViewRowEventArgs e) 
{   
     if (e.Row.RowType == DataControlRowType.DataRow) 
     {     
      ActivityGrid ActivityGrid1= (ActivityGrid)e.Row.FindControl("ActivityGrid1");      
       if (ActivityGrid1 != null) 
       { 
        ActivityGrid1.DataSource = SomeMethodToReturnDataSource();      
        ActivityGrid1.DataBind(); 
       } 
     }   
} 

,或者如果你控制了網格視圖即ActivityGrid1有gridView1然後你可以找到gridView1在ActivityGrid1

protected void GridViewParent_RowDataBound(Object sender, GridViewRowEventArgs e) 
{   
     if (e.Row.RowType == DataControlRowType.DataRow) 
     {     
      ActivityGrid ActivityGrid1= (ActivityGrid)e.Row.FindControl("ActivityGrid1");      
       if (ActivityGrid1 != null) 
       { 
        GridView gridView1 = (ActivityGrid)ActivityGrid1 .FindControl("gridView1");  
        gridView1.DataSource = SomeMethodToReturnDataSource();       
        gridView1.DataBind(); 
       } 
     }   
} 
0

你可以通過在你的UserControl中創建一個公共屬性來做到這一點,並且在這個公共屬性集塊中你可以調用bindData方法。

在GridView的RowDataBound事件中傳遞此對象的List ActiveData。

相關問題