在条件中使用两个DataKeys删除GridView中的行

时间:2015-09-16 01:15:12

标签: asp.net vb.net

我想删除GridView和数据库中的一行..我已经有了删除的存储过程,该方法也已创建,但我的问题是如何为我的DELETE FROM TableName WHERE ID = Variable1 AND Name = Variable2使用两个数据键条款。我已经搜索并看到了很多答案,但他们使用的是CommandArgument,并且仅适用于1个数据键。

我想要这样的东西。

DataKeys="ID, Name"

我想要的是如何在GridView中检索2个数据键的值,如果我设置DataKeys,如:code = xmldoc.createTextNode("SomeValue") codeTextArea.appendChild(code)

任何帮助都将不胜感激。

由于

2 个答案:

答案 0 :(得分:0)

(如果我理解你的话)

存储过程

Create Procedure [dbo].[Procedure_Name](
   @Variable1 type(),  
   @Variable2 type()    --you can add as many variables as you want, but then you have to add them in c# code as a parameters.        
   ) as

delete from Table_Name
where Table_Name.Variable1 = @Variable1 AND Table_Name.Variable2 = @Variable2

带有aspx代码中的按钮

<asp:Button ID="btnDeleteSomething" runat="server" Text="Delete Something" OnClick="btnDeleteSomething_Click"/>

然后在c#codebehind

protected void btnDeleteSomething_Click(object sender, EventArgs e)
{
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_NAME"].ConnectionString))
    {
        SqlCommand cmd = new SqlCommand("Procedure_Name", cn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection.Open();          
        cmd.Parameters.Add("@Variable1", SqlDbType.VarChar, 70(its example with varchar)).Value = Variable1.Text(every Textbox, or label, or dropdownlist)           
        cmd.Parameters.Add("@Variable2", SqlDbType.Int).Value = Session["UserID]" - For example if u want do delete with parameter focused on user;
        try
        {
            int rows = cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            Label1.Text = ex.Message;
        }           
    }        
}

没有Datakeys,它工作正常。如果您想“使用”,那么您必须在SqlDataSource中添加ControlParameter。希望它会帮助你。

答案 1 :(得分:0)

最后我在这个链接上找到了解决方案:

http://www.aspsnippets.com/Articles/Using-Multiple-DataKeyNames-DataKeys-in-ASPNet-GridView-with-examples.aspx

这就是我正在寻找的东西..

    Dim rowIndex As Integer = TryCast(TryCast(sender, ImageButton).NamingContainer GridViewRow).RowIndex

    Dim ID As Integer = Convert.ToInt32(GridView1.DataKeys(rowIndex).Values(0))`
    Dim Name As String = GridView1.DataKeys(rowIndex).Values(1).ToString()`

由于