DataGridでDropDownListを動的にバインドする方法

DataGridにドロップダウンリストを動的にバインドするには、次の手順に従います。

  1. DataGrid のテンプレート列に DropDownList を追加します。DataGrid に TemplateColumn を追加し、その列に DropDownList コントロールを追加します。
<asp:DataGrid ID="myDataGrid" runat="server">
  <Columns>
    <asp:TemplateColumn>
      <ItemTemplate>
        <asp:DropDownList ID="myDropDown" runat="server"></asp:DropDownList>
      </ItemTemplate>
    </asp:TemplateColumn>
  </Columns>
</asp:DataGrid>
  1. DataGridのOnItemDataBoundイベント内で、DropDownListのデータソースを動的にバインドします。コードビハインドファイルのDataGridのOnItemDataBoundイベントにイベントハンドラーを作成します。
protected void myDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
  if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
  {
    // 获取当前行的数据
    DataRowView rowView = (DataRowView)e.Item.DataItem;

    // 找到DropDownList控件
    DropDownList ddl = (DropDownList)e.Item.FindControl("myDropDown");

    // 设置DropDownList的数据源
    ddl.DataSource = GetDropDownListData(rowView);
    ddl.DataTextField = "Text";
    ddl.DataValueField = "Value";
    ddl.DataBind();
  }
}
  1. コードビハインドファイルに、データソースを取得するメソッドを作成します。 このメソッドは必要に応じて、データベース、XML ファイル、またはその他のデータソースからデータを取得できます。
private DataTable GetDropDownListData(DataRowView rowView)
{
  // 根据需要获取数据源
  DataTable dt = new DataTable();
  // ...

  return dt;
}
  1. Page_Loadイベントにおいて、DataGridのデータソースをバインドする。
protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
    myDataGrid.DataSource = GetGridData();
    myDataGrid.DataBind();
  }
}

DataGridのテンプレート列にDropDownList控件を追加し、OnItemDataBoundイベントでデータソースを動的にバインドすることでDataGrid内でDropDownListを動的にバインドする機能を実現しました。

bannerAds