要在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控件,并将其设置为可编辑状态。