要使GridView的所有行都可编辑,可以按照以下步骤操作:
AutoGenerateEditButton
为true
,以便在每一行的末尾自动生成一个编辑按钮。<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true">
...
</asp:GridView>
RowEditing
事件中,将GridView.EditIndex
属性设置为当前编辑行的索引,以便启用编辑模式。protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
// 重新绑定数据源
BindGridView();
}
RowUpdating
事件中,取消编辑模式,并保存更新后的数据。protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// 取消编辑模式
GridView1.EditIndex = -1;
// 获取更新后的数据并保存
TextBox txtName = GridView1.Rows[e.RowIndex].FindControl("txtName") as TextBox;
TextBox txtAge = GridView1.Rows[e.RowIndex].FindControl("txtAge") as TextBox;
// 更新数据
// SaveData(txtName.Text, txtAge.Text);
// 重新绑定数据源
BindGridView();
}
RowCancelingEdit
事件中,取消编辑模式。protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
// 重新绑定数据源
BindGridView();
}
ItemTemplate
中,添加适当的控件(如TextBox、DropDownList等)以显示和编辑数据。<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<%# Eval("Name") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtName" runat="server" Text='<%# Eval("Name") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
protected void BindGridView()
{
// 获取数据源
// List<MyData> data = GetData();
// 绑定数据源
// GridView1.DataSource = data;
// GridView1.DataBind();
}
以上是一种常用的实现方式,你可以根据自己的需求进行适当的修改和调整。