阅读量:1
要使GridView的所有行都可编辑,可以按照以下步骤操作:
- 设置GridView的属性
AutoGenerateEditButton
为true
,以便在每一行的末尾自动生成一个编辑按钮。
<asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true"> ... </asp:GridView>
- 在GridView的
RowEditing
事件中,将GridView.EditIndex
属性设置为当前编辑行的索引,以便启用编辑模式。
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; // 重新绑定数据源 BindGridView(); }
- 在GridView的
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(); }
- 在GridView的
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>
- 在代码中,重新绑定GridView的数据源。
protected void BindGridView() { // 获取数据源 // List<MyData> data = GetData(); // 绑定数据源 // GridView1.DataSource = data; // GridView1.DataBind(); }
以上是一种常用的实现方式,你可以根据自己的需求进行适当的修改和调整。