要在GridView中編輯指定列,需要進行以下步驟:
在GridView中設置AutoGenerateEditButton屬性為true,以顯示編輯按鈕。
在GridView中定義TemplateField列。在TemplateField中,使用TextBox等控件來編輯指定列的數據。
在GridView的RowEditing事件中,通過e.NewEditIndex屬性獲取要編輯的行索引。
在GridView的RowDataBound事件中,根據行索引找到指定列的控件,并將其設置為可編輯狀態。
以下是一個示例代碼:
<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true" OnRowEditing="GridView1_RowEditing" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="列1">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Column1") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("Column1") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="列2">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("Column2") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("Column2") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataBind();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && GridView1.EditIndex == e.Row.RowIndex)
{
TextBox textBox1 = (TextBox)e.Row.FindControl("TextBox1");
TextBox textBox2 = (TextBox)e.Row.FindControl("TextBox2");
textBox1.Enabled = true; // 設置為可編輯狀態
textBox2.Enabled = true; // 設置為可編輯狀態
}
}
在這個示例中,當點擊GridView中的編輯按鈕時,會觸發GridView1_RowEditing事件,將編輯模式切換到指定行。在GridView1_RowDataBound事件中,根據行索引找到指定列的TextBox控件,并將其設置為可編輯狀態。