我想删除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)
任何帮助都将不胜感激。
由于
答案 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)
最后我在这个链接上找到了解决方案:
这就是我正在寻找的东西..
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()`
由于