【问题标题】:Passing a parameter as an event argument in JS to code behind在 JS 中将参数作为事件参数传递给后面的代码
【发布时间】:2015-03-26 08:59:11
【问题描述】:

我在每一行都使用了一个 asp:Button 来将“ID”传递给“lvDataStores_OnButtonClick()”后面的代码。

我不想点击按钮,而是想让整行都可点击。我已经使用

<tr runat="server" class="altItemTableData" onclick='<%#"doPostBack("+Eval("ID")+")" %>'>

然后我想从 JS 中按下 'btn_ViewMap' 并调用代码 lvDataStores_OnButtonClick() 同时传递参数 'MapId'...这样的处理很有效,因为我可以调用 'protected void lvDataStores_OnButtonClick(Object sender, CommandEventArgs e)' 后面的代码

但我不确定如何将 mapId 作为参数传递给 $$("btn_ViewMap")[0].click(); 。 ATM 我正在​​使用类似的东西:

<script type="text/javascript">
     function doPostBack(Mapid) 
     {
        alert("MAP ID is " + Mapid)
        $$("btn_ViewMap")[0].click();
     }

<asp:Button ID="btn_ViewMap" runat="server" visible="false" CommandName="View" CommandArgument='<%#Eval("ID")%>' OnCommand="lvDataStores_OnButtonClick" />

【问题讨论】:

    标签: javascript asp.net html aspbutton


    【解决方案1】:

    CommandArgument 完全是一个服务器端属性,不呈现任何 html 属性。所以你不能改变任何按钮的属性并点击它。好消息是您可以使用客户端 __doPostBack 函数触发回发,并将您的自定义值作为第二个参数传递:

    <script type="text/javascript">
        $("a").click(function () {
            var val = $(this).attr('id').toString();
            __doPostBack("<%= btn1.UniqueID %>", val);
        });
    </script>
    

    您可以从 Request.Form 集合中获取服务器点击处理程序中传递的参数:

    protected void button_click(object sender, EventArgs e)
    {
        var argument = Request.Form["__EVENTARGUMENT"];
    }
    

    如果上面的脚本不起作用,那么页面上可能没有定义 __doPostBack 函数。在这种情况下,将此代码添加到 Page_PreRender 方法:ClientScript.GetPostBackEventReference(btn1, string.Empty);这将强制页面在页面上定义 __doPostBack 方法。

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 2010-10-04
      • 1970-01-01
      • 2014-09-26
      • 2021-03-22
      • 1970-01-01
      相关资源
      最近更新 更多