ドナ、まだ答えが見つからない場合は、私が信じた後にあなたと同じようなことをするために私が何をしたかを説明します.
グリッドビューには、さまざまな asp:TempleteField があります。これは次のようなものです:-
<ItemTemplate>
<asp:Label ID="lblActive" runat="server" Text='<%# Bind("Active") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<%--<asp:TextBox ID="txtboxActive" runat="server" Text='<%# Bind("Active") %>' Width="20px" TextMode="SingleLine" CssClass="textboxEdit"></asp:TextBox>--%>
<asp:DropDownList ID="activeDDL" CausesValidation="False" AutoPostBack="False" runat="server"> <asp:ListItem Text="No" Value="0"></asp:ListItem>
<asp:ListItem Text="Yes" Value="1" Selected="True"></asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
ご覧のとおり、EditItemTemplete に 2 つのドロップダウンリスト項目があります (DDL 値のデータベースにバインドするために使用していたものと同様のコードを残しましたが、もう使用しないため、コメントアウトされています)
次に、ID、runat="server"、DataKeyNames などと一緒に
<asp:Gridview ID=""...
私は持っている
OnRowUpdated="info_GridView_RowUpdated"
これは、SQL 関数の背後にある C# コードで実行され、DDL からの設定でデータベース テーブルを更新します (他のいくつかの Gridview.Databind() も入れて、他のグリッドビューをリセットします)。
protected void info_GridView_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
// The update operation was successful. Retrieve the row being edited.
int index = info_GridView.EditIndex;
GridViewRow row = info_GridView.Rows[index];
int itemID = Convert.ToInt32(row.Cells[4].Text); // Cells[4] is only one available as others are being edited!
// update Active value in the database //
comm = new SqlCommand("UPDATE Products SET Active=@active WHERE ItemID=@itemID", objConn);
comm.Parameters.AddWithValue("@active", ddlValue); // this stores DDL value in database
comm.Parameters.AddWithValue("@itemID", itemID);// Convert.ToInt32(propertyRefTextBox.Text));
objConn.Open();
comm.ExecuteNonQuery();
objConn.Close();
// force update and reset selectedIndex of other gridviews //
Category_GridView.DataBind();
editImages_GridView.DataBind();
Category_GridView.SelectedIndex = -1;
editImages_GridView.SelectedIndex = -1;
}
上記がお役に立てば幸いです。
トレヴ。