gridView 在做删除时怎样获得删除按钮对应的那行的主键值!!!!请指教代码,谢谢!!!!急用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Del") { int iIndex = Convert.ToInt16(e.CommandArgument); string F_NewsId = GridView1.DataKeys[iIndex].Value.ToString(); int DelID = Convert.ToInt16(F_NewsId); OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConnectionString"].ToString())); conn.Open(); string sql = "DELETE FROM news WHERE id=" + DelID; OleDbCommand cmd = new OleDbCommand(sql, conn); OleDbDataReader odr = cmd.ExecuteReader(); conn.Close(); Response.Redirect("News.aspx"); } } http://www.cnblogs.com/downmoon/archive/2007/12/30/1021151.htmlhttp://blog.csdn.net/downmoon/archive/2007/12/14/1935654.aspx 一般把哪行对应的行号记录下来了的,举例说明一下有个datatable是你需要绑定的数据,如果里面有什么userid之类的主键最好,如果没有就自己手动加一列主键在gridview数据绑定的时候将这个主键隐藏的放入该列的某个位置,比如,你的按钮是图片按钮,你可以将你的主键标识放入alerttext或者tooltiptext这些地方当点击该按钮提交表单的时候你是可以获取到整个行的,这个时候你可以findcontorl或者直接获取sender对象然后取你放入的主键值,然后把通过值去你绑定datatable里面找 Button btn = (Button)sender; GridViewRow gvr = (GridViewRow)btn.NamingContainer; int Id = Convert.ToInt32(gvr.Cells[0].Text); 删除时间中写如下代码就可以了 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { // e.RowIndex 删除行的索引 //GridView1.Rows[e.RowIndex].Cells[主建列索引].Text string value = GridView1.Rows[e.RowIndex].Cells[0].Text; } .aspx <asp:GridView ID="GridView1" runat="server"> <Columns> <asp:TemplateField ShowHeader="False"> <ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandName="del" Text="删除按钮" OnCommand="LinkButton1_Command" CommandArgument='<%#Eval("你的主键字段名") %>'></asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>.cs protected void LinkButton1_Command(object sender, CommandEventArgs e) { Response.Write("<script>alert("+e.CommandArgument.ToString()+")</script>");//e.CommandArgument就是主键 } 用这样GridView1.Rows[e.RowIndex].Cells[0].Text我怎么取不到值啊??????请谁来帮帮我 如果是绑定列可以使用Text如果是模板列等就需要用Controls集合等其它方法了。 标准做法设置GridView的DataKeyNames属性为主键<asp:GridView ID="gvLogs" runat="server" DataKeyNames="id"...然后在GridView的RowDeleting事件中处理 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value); //... } 如何在repeater中实现上一篇,下一篇 如何 清空 所有 用户的 session ??? 再问-url重写的问题:如果请求的页面不存在应该怎么处理? 如何去验证使用GDI+绘制的图片随机验证码? 这种写法不对吗!!谁能帮我看看!! ASP.Net的查询性能 如何在服务器建立sql数据库(菜鸟问题) GridView 自动生成的列控制列的宽度问题,高手来看看呀!! 请问各位大侠:怎样在一个存储过程中通过参数来选择执行不同的SQL语句? VS2008下面安装AnkhSVN 2.1.6566.14问题[有图] asp.net 关于js和客户端交互的问题? 关于大类小类选择问题
{
if (e.CommandName == "Del")
{
int iIndex = Convert.ToInt16(e.CommandArgument);
string F_NewsId = GridView1.DataKeys[iIndex].Value.ToString();
int DelID = Convert.ToInt16(F_NewsId);
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConnectionString"].ToString()));
conn.Open();
string sql = "DELETE FROM news WHERE id=" + DelID;
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataReader odr = cmd.ExecuteReader();
conn.Close();
Response.Redirect("News.aspx");
}
}
http://blog.csdn.net/downmoon/archive/2007/12/14/1935654.aspx
有个datatable是你需要绑定的数据,如果里面有什么userid之类的主键最好,如果没有就自己手动加一列主键
在gridview数据绑定的时候将这个主键隐藏的放入该列的某个位置,比如,你的按钮是图片按钮,你可以将你的主键标识放入alerttext或者tooltiptext这些地方
当点击该按钮提交表单的时候你是可以获取到整个行的,这个时候你可以findcontorl或者直接获取sender对象然后取你放入的主键值,然后把通过值去你绑定datatable里面找
Button btn = (Button)sender;
GridViewRow gvr = (GridViewRow)btn.NamingContainer;
int Id = Convert.ToInt32(gvr.Cells[0].Text);
{
// e.RowIndex 删除行的索引
//GridView1.Rows[e.RowIndex].Cells[主建列索引].Text
string value = GridView1.Rows[e.RowIndex].Cells[0].Text;
}
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" CommandName="del"
Text="删除按钮" OnCommand="LinkButton1_Command" CommandArgument='<%#Eval("你的主键字段名") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>.cs protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
Response.Write("<script>alert("+e.CommandArgument.ToString()+")</script>");//e.CommandArgument就是主键
}
<asp:GridView ID="gvLogs" runat="server" DataKeyNames="id"...然后在GridView的RowDeleting事件中处理 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
//...
}