<asp:LinkButton ID="lnkprogress" runat="server" class="label label-info" BackColor="#589FC2" CommandArgument='<%#Eval("BookingId")%>' OnClientClick="jk();" >In progress</asp:LinkButton>
此按钮存在于每一行的转发器中。我想使用 javascript 获取命令参数的值。请回复
<asp:LinkButton ID="lnkprogress" runat="server" class="label label-info" BackColor="#589FC2" CommandArgument='<%#Eval("BookingId")%>' OnClientClick="jk();" >In progress</asp:LinkButton>
此按钮存在于每一行的转发器中。我想使用 javascript 获取命令参数的值。请回复
您可以使用 html5 数据属性来执行此操作,如下所示:
<asp:LinkButton ID="lnkprogress" runat="server" class="label label-info" BackColor="#589FC2" data-bookingid='<%#Eval("BookingId")%>' CommandArgument='<%#Eval("BookingId")%>' OnClientClick="jk();" >In progress</asp:LinkButton>
然后使用一些 JavaScript 检索它,如下所示:
var lnkProgress = document.getElementById('<%= lnkProgress.ClientID %>');
var bookingID = lnkProgress.getAttribute("data-bookingid");
尽管我假设您的 lnkProgress 将位于一个命名容器中,例如数据绑定控件之一,因此它可能不像getElementById('<%= lnkProgress.ClientID %>');
获取对它的引用那么容易。
<asp:LinkButton ID="lnkprogress" runat="server" class="label label-info"
BackColor="#589FC2" data-CommandArgument='<%#Eval("BookingId")%>'
OnClientClick="jk();" >In progress</asp:LinkButton>
使用 Javascript:
document.getElementsId("lnkprogress")[0].getAttribute("CommandArgument")
使用 jQuery:
$('#lnkprogress').data('CommandArgument');
按照 rtpHarry 的建议添加一个 html5 属性,并将控件作为参数发送到 OnClientClick:
<asp:LinkButton ID="lnkprogress" runat="server" class="label label-info" `BackColor="#589FC2" data-bookingid='<%#Eval("BookingId")%>' CommandArgument='<%#Eval("BookingId")%>' OnClientClick="javascript: jk(this);" >In progress</asp:LinkButton>
在您的函数中,只需引用 control 属性:
function jk(ctrl) {
var id = ctrl.getAttribute("data-bookingid");
}
通过将控件作为参数发送,您不必担心链接按钮是否位于另一个容器(即gridview)中。