您的位置首页生活百科

c#asp.net怎么让gridview的单元格怎么可编辑

c#asp.net怎么让gridview的单元格怎么可编辑

的有关信息介绍如下:

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());

}

}