c#asp.net怎么让gridview的单元格怎么可编辑
的有关信息介绍如下:c#asp.net使gridview单元格可编辑,效果图如下所示。
添加BoundField,就是绑定列,设置DataField(绑定的列),HeaderText列标题。添加CommandField列,开启编辑,更新,取消;并绑定事件。操作如图所示。
前台代码
OnRowEditing="gv_RowEditing" OnRowCancelingEdit="gv_RowCancelingEdit" OnRowUpdating="gv_RowUpdating">
后台代码:
public partial class TestGridView : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = GetDt();
BindGridView(dt);
}
}
private void BindGridView(DataTable dt)
{
//(重点)设置一个标识(一般是主键)绑定在每一项上去,用于更新数据时,获取主键。(把主键id放在DataKeys)
this.gv.DataKeyNames = new string[] { "id" }; //这个是绑定在行上的
gv.DataSource = dt;
gv.DataBind();
}
//实际业务中一般是查询数据库获取
private DataTable GetDt()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(string));
dt.Columns.Add("测试字段1", typeof(string));
dt.Columns.Add("测试字段2", typeof(string));
DataRow r1 = dt.NewRow();
r1 = "1";
r1 = "测试编辑GridView1";
r1 = "测试编辑GridView2";
dt.Rows.Add(r1);
return dt;
}
//点击编辑
protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
{
//设置编辑时的行 等于用户触发事件的这个行
this.gv.EditIndex = e.NewEditIndex;
//重新绑定
BindGridView(GetDt());
}
//点击取消时(取消编辑)
protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
//设置当前选中行索引为-1(也就是没有)
this.gv.EditIndex = -1;
//重新绑定
BindGridView(GetDt());
}
//编辑时的更新按钮
protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//当前更新的行数
int index = e.RowIndex;
//(重点)获取格子里面,第index行,第0号单元格里面第0个控件(也就是TextBox)强转,获取值
string newsTitle = ((TextBox)this.gv.Rows[index].Cells.Controls).Text.ToString();
string newsContent = ((TextBox)this.gv.Rows[index].Cells.Controls).Text.ToString();
//这里的id是绑定上去的主键
int id = Convert.ToInt32(this.gv.DataKeys[index].Value);
string ceshi1 = ((TextBox)(gv.Rows[e.RowIndex].Cells.Controls)).Text.ToString().Trim();
string ceshi2 = ((TextBox)(gv.Rows[e.RowIndex].Cells.Controls)).Text.ToString().Trim();
//这里实际业务 应该通过id更新字段 更新完后重新绑定
BindGridView(GetDt());
}
}