将参数作为JS中的事件参数传递给后面的代码

时间:2015-03-26 08:59:12

标签: javascript html asp.net html5 aspbutton

我在每行使用了一个asp:按钮来传递ID' ID'后面的代码< lvDataStores_OnButtonClick()'。

我没有点击按钮,而是想让整行可以点击。我用

完成了这个
<tr runat="server" class="altItemTableData" onclick='<%#"doPostBack("+Eval("ID")+")" %>'>

从JS我想按下&#39; btn_ViewMap&#39;并且在传递参数时调用代码lvDataStores_OnButtonClick()&#39; MapId&#39; ...这可以解决这个问题,因为我可以调用代码&#39; protected void lvDataStores_OnButtonClick(Object sender, CommandEventArgs e)&#39;

但我不确定如何将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" />

1 个答案:

答案 0 :(得分:0)

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方法。