0

オブジェクトのリストをコンストラクターのパラメーターとして受け取るActivityGridという名前のユーザーコントロールがあります。

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> 

グリッドビュー内にバインドされているときに、このユーザー コントロールでオブジェクトのリストを渡すにはどうすればよいですか?

List<clsActivityRow> ActivityDataコードビハインドでオブジェクトのリストを用意しました。

4

2 に答える 2

0

これを行うには、UserControl にパブリック プロパティを作成し、このパブリック プロパティ セット ブロックで bindData メソッドを呼び出すことができます。

GridView RowDataBound イベントで、このユーザー コントロールのオブジェクト List ActiveData を渡します。

于 2012-09-01T07:41:18.247 に答える
0

そのイベントのすべての行でActivityGrid1 を見つけてobject割り当てます。GridViewParentRowDataBounddatasource

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 がある場合、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();
                }
         }          
}
于 2012-09-01T07:41:30.807 に答える