グリッドビューで一列を編集可能にするには

グリッドビュー列を編集可能にするには、その列を TemplateField として定義し、その中に TextBox や DropDownList など編集機能を備えたコントロールを入れてください。

まず、GridViewのColumnsコレクションにTemplateFieldを追加し、そのHeaderTextプロパティを設定して列ヘッダーを表示します。例:

<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField HeaderText="Editable Column">
<ItemTemplate>
<%# Eval("ColumnName") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ColumnName") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

上述サンプルでは、非編集モードで列のテキスト値を表示するために ItemTemplate を使用し、編集モードで編集可能なコントロールを表示するために EditItemTemplate を使用しています。また、TextBox コントロールの Text プロパティは Bind 関数によってデータ ソース内の対応する列の値にバインドされており、これによって、編集モードでテキストボックスに現在の行の値が表示されます。

次に、GridViewのエディットモードを起動する方法を提供する必要があります。例えば、GridViewのEditIndex属性で、編集する行のインデックスを指定し、GridViewのRowEditingイベントで編集操作を処理します。例えば:

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
// 数据绑定
BindGridView();
}

RowEditing イベントハンドラでは、GridView の EditIndex プロパティを編集対象の行のインデックスに設定してから、データバインディングを再度実行することで編集モードを表示します。

最後に、編集したデータの保存方法を GridView の RowUpdating イベントで編集されたデータを処理する必要があります。たとえば、

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = GridView1.Rows[e.RowIndex];
TextBox textBox1 = (TextBox)row.FindControl("TextBox1");
// 获取编辑后的值
string editedValue = textBox1.Text;
// 更新数据源中对应的值
// ...
GridView1.EditIndex = -1;
// 数据绑定
BindGridView();
}

RowUpdatingイベントハンドラ内で、FindControlメソッドを使用してTextBoxコントロールを見つけ、編集後の値を取得します。次に、必要に応じてデータソースの対応する値を更新し、GridViewのEditIndexプロパティを-1に設定して編集モードを解除し、データバインディングを再実行します。

GridView に列を編集可能にする簡単な方法が上記の手法だが、必要および複雑さに合わせて調整・拡張してほしい。

bannerAds