简体   繁体   English

将参数传递给绑定到gridview的用户控件

[英]Passing parameter to a user control which is bound to a gridview

I have a user control named ActivityGrid which takes a list of object as a parameter in it's constructor. 我有一个名为ActivityGrid的用户控件,该控件将对象列表作为其构造函数中的参数。

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

I need to bind this user control in a gridView called parentGrid, so I used Templatefield. 我需要将此用户控件绑定到名为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> 

How do I pass the list of object in this user control while it is bound inside a gridview? 当绑定到gridview中时,如何在此用户控件中传递对象列表?

I have the list of object List<clsActivityRow> ActivityData ready in the code behind. 我在后面的代码中已准备好对象List<clsActivityRow> ActivityData

You can do this by creating a public Property in your UserControl and In this public property set block you can call bindData method. 您可以通过在UserControl中创建一个公共属性来执行此操作,然后在此公共属性集块中调用bindData方法。

Pass the object List ActiveData for this usercontrol, in GridView RowDataBound Event. 在GridView RowDataBound事件中为此对象控件传递对象List ActiveData。

You need to find the ActivityGrid1 object in every row of GridViewParent in its RowDataBound event and assign datasource . 您需要在GridViewParentRowDataBound事件的每一行中找到ActivityGrid1 object ,并分配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();
                }
         }          
}

or if your control has grid view ie ActivityGrid1 has gridView1 then you can find gridView1 in ActivityGrid1 或者,如果您的控件具有网格视图,即ActivityGrid1具有gridView1,则可以在ActivityGrid1中找到gridView1

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();
                }
         }          
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM