C# 将datakeyname添加到sql参数
在我的gridview上,我想激活delete按钮。我已将delete按钮添加到gridview,并将C# 将datakeyname添加到sql参数,c#,asp.net,sql,gridview,C#,Asp.net,Sql,Gridview,在我的gridview上,我想激活delete按钮。我已将delete按钮添加到gridview,并将DeleteCommand添加到SqlDataSource <asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT rowNumber, firstName as 'Fornavn' where shopID=@pageid order by firstName asc" Delete
DeleteCommand
添加到SqlDataSource
<asp:SqlDataSource ID="SqlDataSource1" runat="server" SelectCommand="SELECT rowNumber, firstName as 'Fornavn' where shopID=@pageid order by firstName asc" DeleteCommand="DELETE FROM [sydShopOrder] WHERE rowNumber=@rowNumber">
<SelectParameters><asp:QueryStringParameter Name="pageid" QueryStringField="id"/> </SelectParameters>
</asp:SqlDataSource>
如您所见,我可以从QueryStringField添加SelectParameters
pageid。现在我想再添加一个DeleteParameters
到这个asp:SqlDataSource
,它是@rowNumber
,这是我的datakeyname
用于gridview。我如何将这个datakeyname
添加到sql<代码>删除参数
或者有更好的方法吗?我缺少的东西您的GridView定义中是否有
DataKeyNames=“pageid”
?如果已将此列设置为表的主键,则应自动将其包含在GridView中
确保你的主键通过了思考
在GridView定义中是否有
DataKeyNames=“pageid”
?如果已将此列设置为表的主键,则应自动将其包含在GridView中
确保你的主键通过了思考
SqlDataSource
控件。当前值在值字典中传递。原始值在键或旧值字典中传递
这意味着,如果rowNumber
实际上是一列,并且应该用作delete命令中的参数,只需将delete命令设置为:
"DELETE FROM [sydShopOrder] WHERE rowNumber=@rowNumber"
只要为每个参数指定与其影响的字段相同的名称,并在其前面加上@
符号(这样FirstName
就变成@FirstName
),就不需要定义参数。
这是因为ASP.NET数据控件会在触发更新之前自动提交一组具有新值的参数。集合中的每个参数都使用此命名约定
一种特殊情况是,当您要删除数据时,其他用户可能会更改相同的数据,因此在这种情况下,您可能不想删除它
在这种情况下,请将SqlDataSource的属性:OldValuesParameterFormatString
用作:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
SelectCommand="SELECT rowNumber, firstName as 'Fornavn'
where shopID=@pageid order by firstName asc"
DeleteCommand="DELETE FROM [sydShopOrder] WHERE rowNumber=@original_rowNumber">
OldValuesParameterFormatString="original_{0}"
>
</asp:SqlDataSource>
在删除(以及更新)操作期间,数据绑定控件将当前和原始记录值传递给SqlDataSource
控件。当前值在值字典中传递。原始值在键或旧值字典中传递
这意味着,如果rowNumber
实际上是一列,并且应该用作delete命令中的参数,只需将delete命令设置为:
"DELETE FROM [sydShopOrder] WHERE rowNumber=@rowNumber"
只要为每个参数指定与其影响的字段相同的名称,并在其前面加上@
符号(这样FirstName
就变成@FirstName
),就不需要定义参数。
这是因为ASP.NET数据控件会在触发更新之前自动提交一组具有新值的参数。集合中的每个参数都使用此命名约定
一种特殊情况是,当您要删除数据时,其他用户可能会更改相同的数据,因此在这种情况下,您可能不想删除它
在这种情况下,请将SqlDataSource的属性:OldValuesParameterFormatString
用作:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
SelectCommand="SELECT rowNumber, firstName as 'Fornavn'
where shopID=@pageid order by firstName asc"
DeleteCommand="DELETE FROM [sydShopOrder] WHERE rowNumber=@original_rowNumber">
OldValuesParameterFormatString="original_{0}"
>
</asp:SqlDataSource>
希望这对你有帮助我的意见是用codebehind做所有事情希望这对你有帮助我的意见是用codebehind做所有事情。。