Gridview获取行ID值问题 急救助! 将查询出的数据绑定到gridview中后,用onRowEditing事件将每一行的具体信息显示到textbox中,然后修改信息,点击“修改”按钮,执行修改语句,如何获取我要修改这条数据的ID呢?还望大家指教,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你那个修改按钮不是有个属性CommandArgument='<%#Eval("id") %>'和 CommandName="lblEditer",然后再事件protected void gv_List_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "lblEditer")//删除 { btn_Save.Visible = true; btn_Add.Visible = false; Sharewin.Model.columnInfo column = columnBLL.GetModel(int.Parse(e.CommandArgument.ToString())); EditerModel(column); }}进行操作可以了! 一般都是把关键ID绑定在按钮的commandargument属性中吧 绑定在datakey里面!Updating事件里面 long id= _gvMessage.DataKeys[e.RowIndex].Value 我已经绑定在datakey里面了 GridView1.DataKeyNames = new string[] { "Id" };就是想知道sql语句里最后的条件 where id='"+()+"' 括号里的东西该怎么写 _gvMessage.DataKeys[e.RowIndex].Value就是这种写法吧 "e.RowIndex" .不出来RowIndex啊,只有Equals,GetHashCode,GetType,ToString 我感觉你好像都写在了显示层。 where id=@id 在gridview 绑定数据后,只要根据GridView1.DataKeyNames = new string[] { "Id" }; 只要根据这id做更改,修改,删除。你只需要遍历那一行的数据就可以了。public void Bind() { UserInfoBLL userInfoBLL = new UserInfoBLL(); List<UserInfo> list = userInfoBLL.SelectUserInfo(); this.gvUserInfo.DataSource = list; gvUserInfo.DataKeyNames = new string[] { "userID" }; this.gvUserInfo.DataBind(); } /// <summary> /// 编辑 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvUserInfo_RowEditing(object sender, GridViewEditEventArgs e) { this.gvUserInfo.EditIndex = e.NewEditIndex; Bind(); } /// <summary> /// 取消编辑 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvUserInfo_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { this.gvUserInfo.EditIndex = -1; Bind(); } /// <summary> /// 保存 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void gvUserInfo_RowUpdating(object sender, GridViewUpdateEventArgs e) { string userID = this.gvUserInfo.DataKeys[e.RowIndex].Value.ToString(); userInfo.UserID = int.Parse(userID); userInfo.UserName = ((TextBox)(this.gvUserInfo.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString(); userInfo.UserSex = ((TextBox)(this.gvUserInfo.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString(); userInfo.UserDesc = ((TextBox)(this.gvUserInfo.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString(); int i = userInfoBLL.UpdateUserInfo(userInfo); if (i > 0) { Response.Write("<script>alert('修改成功!')</script>"); } else { Response.Write("<script>alert('修改失败!')</script>"); } Bind(); } protected void tb_Add_Click(object sender, EventArgs e) { string updateSql = "update tb_C set AreaId='" + Convert.ToInt32(this.area.SelectedValue.ToString().Trim()) + "',Reporter='" + this.Reporter.Text.Trim() + "',QuestionsId='" + Convert.ToInt32(this.questions.SelectedValue.ToString().Trim()) + "',OtherFileNum='" + this.otherfilenum.Text.Trim() + "',ReporterDate='" + this.reporterdate.Text.Trim() + "',CompDrawNum='" + this.compdrawnum.Text.Trim() + "',ProName='" + this.proname.Text.Trim() + "',ProAddress='" + this.proaddress.Text.Trim() + "',Pressure='" + this.pressure.Text.Trim() + "',One_Five='" + this.one_five.Text.Trim() + "',BeingQuestions='" + this.beingquestions.Text.Trim() + "',ResolveMethod='" + this.resolvemethod.Text.Trim() + "',Leader='" + this.leader.Text.Trim() + "',E_DrawChanges='" + this.e_drawchanges.Text.Trim() + "',ResolveDate='" + this.resolvedate.Text.Trim() + "',RelWithUniter='" + this.relwithuniter.Text.Trim() + "',UnresolveReason='" + this.unresolvereason.Text.Trim() + "' where Id='"+GridView1.DataKeys[e.]+"'"; cc.ExecSQL(updateSql); Response.Write(cc.MessageBox("编辑成功!", "QuestionsCl.aspx")); }我只想用普通的按钮来实现修改功能,而不是 protected void gvUserInfo_RowUpdating(object sender, GridViewUpdateEventArgs e){}这样的,有办法么? 请问如何通过ASP.NET 模拟POST 百度贴吧 回复文本框不能赋值 求教 急急急!在UpdatePanel中如何对Repeater的某一项刷新,而不是全部项都刷新 菜鸟提问:Cookie是由服务器控制的还是浏览器控制的? 奇怪问题 高手请进 在线等待.... 快看看,页面为什么跳不出框架。 COM+的版本控制 讨论走SOHU一簇路线如何? 有asp基础,从哪里入手学习asp.net网站(c#版)容易一些,谢谢! 求一条SQL语句,把三张表导入到一张递归表里 cookie域的问题。
protected void gv_List_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "lblEditer")//删除
{
btn_Save.Visible = true;
btn_Add.Visible = false;
Sharewin.Model.columnInfo column = columnBLL.GetModel(int.Parse(e.CommandArgument.ToString()));
EditerModel(column);
}
}
进行操作可以了!
long id= _gvMessage.DataKeys[e.RowIndex].Value
我已经绑定在datakey里面了 GridView1.DataKeyNames = new string[] { "Id" };
就是想知道sql语句里最后的条件 where id='"+()+"' 括号里的东西该怎么写
就是这种写法吧
"e.RowIndex" .不出来RowIndex啊,只有Equals,GetHashCode,GetType,ToString
我感觉你好像都写在了显示层。 where id=@id 在gridview 绑定数据后,只要根据GridView1.DataKeyNames = new string[] { "Id" }; 只要根据这id做更改,修改,删除。你只需要遍历那一行的数据就可以了。public void Bind()
{
UserInfoBLL userInfoBLL = new UserInfoBLL();
List<UserInfo> list = userInfoBLL.SelectUserInfo();
this.gvUserInfo.DataSource = list;
gvUserInfo.DataKeyNames = new string[] { "userID" };
this.gvUserInfo.DataBind();
} /// <summary>
/// 编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gvUserInfo_RowEditing(object sender, GridViewEditEventArgs e)
{
this.gvUserInfo.EditIndex = e.NewEditIndex;
Bind();
}
/// <summary>
/// 取消编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gvUserInfo_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
this.gvUserInfo.EditIndex = -1;
Bind();
} /// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gvUserInfo_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string userID = this.gvUserInfo.DataKeys[e.RowIndex].Value.ToString();
userInfo.UserID = int.Parse(userID); userInfo.UserName = ((TextBox)(this.gvUserInfo.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString();
userInfo.UserSex = ((TextBox)(this.gvUserInfo.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString();
userInfo.UserDesc = ((TextBox)(this.gvUserInfo.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString(); int i = userInfoBLL.UpdateUserInfo(userInfo);
if (i > 0)
{
Response.Write("<script>alert('修改成功!')</script>");
}
else
{
Response.Write("<script>alert('修改失败!')</script>");
} Bind();
}
{
string updateSql = "update tb_C set AreaId='" + Convert.ToInt32(this.area.SelectedValue.ToString().Trim()) + "',Reporter='" + this.Reporter.Text.Trim() + "',QuestionsId='" + Convert.ToInt32(this.questions.SelectedValue.ToString().Trim()) + "',OtherFileNum='" + this.otherfilenum.Text.Trim() + "',ReporterDate='" + this.reporterdate.Text.Trim() + "',CompDrawNum='" + this.compdrawnum.Text.Trim() + "',ProName='" + this.proname.Text.Trim() + "',ProAddress='" + this.proaddress.Text.Trim() + "',Pressure='" + this.pressure.Text.Trim() + "',One_Five='" + this.one_five.Text.Trim() + "',BeingQuestions='" + this.beingquestions.Text.Trim() + "',ResolveMethod='" + this.resolvemethod.Text.Trim() + "',Leader='" + this.leader.Text.Trim() + "',E_DrawChanges='" + this.e_drawchanges.Text.Trim() + "',ResolveDate='" + this.resolvedate.Text.Trim() + "',RelWithUniter='" + this.relwithuniter.Text.Trim() + "',UnresolveReason='" + this.unresolvereason.Text.Trim() + "' where Id='"+GridView1.DataKeys[e.]+"'";
cc.ExecSQL(updateSql);
Response.Write(cc.MessageBox("编辑成功!", "QuestionsCl.aspx"));
}我只想用普通的按钮来实现修改功能,
而不是
protected void gvUserInfo_RowUpdating(object sender, GridViewUpdateEventArgs e)
{}
这样的,有办法么?