我在每行使用了一个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" />
答案 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方法。