是否可以将CommandArgument参数中的多个参数传递给ASP.NET转发器的ItemCommand处理程序?
我有一个用几个列呈现的表,非常基本,我只需要一个linkbutton,当单击它时,我需要向onclick函数传递3个参数,这3个参数都是数据绑定参数。除了使用CSV格式(这对我不起作用,因为值本身可以包含逗号)之外,似乎没有其他方法可以做到这一点。
那么,是否可以按照下面的代码传递p_field1、p_field2和p_field3。谢谢!
<asp:Repeater ID="rptId" runat="server" EnableViewState="true" OnItemCommand="rptId_ItemCommand">
<ItemTemplate>
<tr align="center" class='<asp:Literal ID="litRowClass" runat="server" />'>
<td><%#Eval("p_field1")%></td>
<td><%# Eval("p_field2")%></td>
<td><%# Eval("p_field3")%></td>
<td><%# Eval("p_field4")%></td>
<td><asp:LinkButton runat="server" ID="lnkBtnId" CommandArgument='<%# Eval("p_field1") %>' CommandName="testCommandName">MARK</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:Repeater>发布于 2011-02-12 05:31:51
不幸的是,如果没有"CSV“样式的格式,就不能传入多个字段;只允许一个字符串。
您必须进行一些字符串连接,然后再将其拆分出OnCommand。选择一些不会出现在参数中的分隔符,下面我使用了|。
<asp:Repeater ID="rptId" runat="server" EnableViewState="true" OnItemCommand="rptId_ItemCommand">
<ItemTemplate>
<tr align="center" class='<asp:Literal ID="litRowClass" runat="server" />'>
<td><%#Eval("p_field1")%></td>
<td><%# Eval("p_field2")%></td>
<td><%# Eval("p_field3")%></td>
<td><%# Eval("p_field4")%></td>
<td><asp:LinkButton runat="server" ID="lnkBtnId" CommandArgument='<%# Eval("p_field1") + "|" + Eval("p_field2") + "|" + Eval("p_field3") %>' CommandName="testCommandName">MARK</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:Repeater>然后,在rptId_ItemCommand中需要类似以下内容的内容
string[] arguments = CommandEventArgs.CommandArgument.Split('|');发布于 2011-02-12 05:41:43
CommandArgument='<%# JoinFields(Eval("p_field1"), Eval("p_field2"), Eval("p_field3")) %>'你可以使用你想要的作为分隔符(F.E.管道|)。您可以很容易地在服务器端拆分这些值。要连接这些字段,您可以使用如下的helper-function:
Protected Function JoinFields(ByVal p_field1 As Object, ByVal p_field2 As Object, ByVal p_field3 As Object) As String
Return String.Join("|", New Object() {p_field1, p_field2, p_field3})
End Functionhttps://stackoverflow.com/questions/4974168
复制相似问题