首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataRepeater OnCommand multiple CommandArgument

DataRepeater OnCommand multiple CommandArgument
EN

Stack Overflow用户
提问于 2011-02-12 05:19:02
回答 2查看 5.9K关注 0票数 1

是否可以将CommandArgument参数中的多个参数传递给ASP.NET转发器的ItemCommand处理程序?

我有一个用几个列呈现的表,非常基本,我只需要一个linkbutton,当单击它时,我需要向onclick函数传递3个参数,这3个参数都是数据绑定参数。除了使用CSV格式(这对我不起作用,因为值本身可以包含逗号)之外,似乎没有其他方法可以做到这一点。

那么,是否可以按照下面的代码传递p_field1p_field2p_field3。谢谢!

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-12 05:31:51

不幸的是,如果没有"CSV“样式的格式,就不能传入多个字段;只允许一个字符串。

您必须进行一些字符串连接,然后再将其拆分出OnCommand。选择一些不会出现在参数中的分隔符,下面我使用了|

代码语言:javascript
复制
<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中需要类似以下内容的内容

代码语言:javascript
复制
string[] arguments = CommandEventArgs.CommandArgument.Split('|');
票数 2
EN

Stack Overflow用户

发布于 2011-02-12 05:41:43

代码语言:javascript
复制
CommandArgument='<%# JoinFields(Eval("p_field1"), Eval("p_field2"), Eval("p_field3")) %>'

你可以使用你想要的作为分隔符(F.E.管道|)。您可以很容易地在服务器端拆分这些值。要连接这些字段,您可以使用如下的helper-function:

代码语言:javascript
复制
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 Function
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4974168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档