私があなただったら、あなたが提供した情報から、解決策は
<asp:TemplateField />
に DropDownList がある列
<EditTemplate>
このコラムの。次に、GridView にある種のボタンが必要です。
CommandName="Edit"
これにより、編集および設定されている行のインデックスを識別するために使用する GridView の編集イベントが発生します
GridView1.EditIndex = e.NewEditIndex
その行には、値が 0 と 1 の DropDownList があります。また、EditTemplate に、変更を保存するボタンが必要です。
CommandName="Update"
次に、グリッドの RowUpdating イベントを処理して、RowUpdating が発生したときに DropdownList から新しい値を見つけ、データベース内の関連する行をこの新しいデータで更新してから、GridView の EditIndex プロパティを '-1' に戻してその行の編集を停止します。次に、GridView 内のデータを再バインドして、変更を表示します。
小さな例は次のようになります。
<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:Button ID="EditImageButton" runat="server" Text="Edit" CommandName="Edit"' />
</ItemTemplate>
<EditItemTemplate>
<asp:Button ID="UpdateButton" runat="server" ToolTip="Save" CommandName="Update"/>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<% #Eval("Status")%>
</ItemTemplate>
<EditTemplate>
<asp:DropdownList ID="List" runat="server" />
<EdiTemplate>
</asp:TemplateField>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataSource = Session["domainData"];
GridView1.DataBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int index = GridView1.EditIndex;
int key = Convert.ToInt32(GridView.DataKeys[index].Value);
GridViewRow row = GridView1.Rows[index];
DropdownList = row.FindControl("List") as DropDownList;
// Save changes to database
// GridView1.EditIndex = -1;
// Rebind grid data
}