2012-09-01 126 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。

相关问题