用gridview删除一行,但是表里面有两个主键,怎么确定行

来源:百度知道 编辑:UC知道 时间:2024/05/19 04:50:09
用gridview删除一行,但是表里面有两个主键,怎么确定行
下面的代码的主键为readerid。如果主键为readerid和bookid,那么此代码怎么写呢,请高手作答!!!

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string sqlstr = "delete from borrowbook where readerid='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcon = new SqlConnection(strCon);
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
bind();
}
关键就是这句,当主键为readerid时候,语句为
where readerid='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
当主键为readerid和bookid时候怎么写??????
高手在哪里????急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急

不会有什么不同吧,在GridView属性里指定DataKeyNames=readerid应该就可以(没有这么用过,所以不敢肯定,可以测试一下看行不行)。

建议你用这种方法比较灵活,
GridView的模板列中添加控件:
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lnkDelete" CommandArgument='<%#Eval("readerid") %>' CommandName="DELETED">删除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

GridView中的GridView1_RowCommand事件代码:
//获取操作类型
string commandName = e.CommandName.ToString();
if(commandName=="DELETED")
{
string sqlstr = "delete from borrowbook where readerid='" + e.CommandArgument.ToString() + "'";
sqlcon = new SqlConnection(strCon);
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
}
//重新绑定
bind();

GridView1.DataKeyNam