我有一个多行的网格视图,每行都有一个更新按钮,当有人点击更新按钮时,我需要传递2个值。除了在CommandArgument中打包参数,用逗号分隔(古老而不优雅),我如何传递多个参数?
<asp:LinkButton ID="UpdateButton" runat="server" CommandName="UpdateRow" CommandArgument="arg_value" Text="Update and Insert" OnCommand="CommandButton_Click" ></asp:LinkButton>
需要注意的是,这些值不能从页面上的任何控件中检索,因此我目前不寻求任何设计解决方案。
7条答案
按热度按时间egdjgwm81#
您可以将分号分隔的值作为命令参数传递,然后拆分字符串并使用它。
在服务器端
mkh04yzy2#
在四处打探之后,凯尔西似乎是正确的。
当你想吃的时候,就用逗号之类的东西把它分开。
wz1wpwve3#
@帕特里克的回答是个好主意,值得更多的赞扬!.你可以拥有你想要的任意多的数据项,它们都是独立的,如果需要的话可以在客户端使用。
它们也可以声明性地添加,而不是在代码中添加。我刚刚为这样的GridView做了这样的操作:
在行命令中,执行以下操作:
这比把所有的值和分隔符放在一起,然后在最后再次解包要干净得多。
不要忘记测试/清理从页面返回的任何数据,以防数据被篡改!
t2a7ltrp4#
我的方法是使用attributes集合从代码后面添加HTML数据-属性。这与jquery和客户端脚本更内联。
然后通过属性集合检索值
dpiehjr45#
一个更优雅的方式做同样的添加到上面的评论..
在服务器端:
3df52oht6#
要么将其存储在gridview datakeys集合中,要么将其存储在同一单元格内的隐藏字段中,要么将值连接在一起,这是唯一的方法,不能在一个链接中存储两个值。
myzjeezk7#
如果要传递两个值,可以使用此方法
基本上我把{CommmandName,CommandArgument}当作键值。从数据库字段设置这两个。在这种情况下,你必须使用OnClick事件和
OnCommand
事件,我认为这是更干净的代码。