所以我在这里。我尽我所能自己做,我是asp.net网络表格的新手,我在网上打了一个多星期,阅读了数百篇帖子,但我完全没能解决我的问题。 我正在使用网格视图我有链接按钮,我想用jQuery UI对话框按钮验证。首先,我尝试从代码后面附加事件处理程序,即 btnDelete_click(对象发送者,EventArgs e),以便在删除按钮上单击jQuery对话框进行调用,从{{ 3}}我完全失败了,我看到了,如果它是一个独立的按钮,不在像网格视图等的父容器中,它的工作方式与上面的链接一样,但是如果它在网格中,它会继续说,如果Id没有t存在于当前的背景下。我尽我所能:
1)制作按钮ClientIDMode = Static并尝试使用 document.getElementById('<%= btnDelete.ClientID%>')访问它。click() ; 其中btnDelete是链接按钮的ID。我得到的错误 btnDelete在当前上下文中不存在。
2)删除了静态选项并使用了 document.getElementById('<%= gvDoctors.FindControl(“<%= btnDelete.ClientID%>”)。 click(); 。我得到的错误是对象引用没有设置为对象的实例。
3)无论是否使用静态ID模式,我都尝试了所有方法,也使用了 UniqueID ,即使我在右侧复制了来自 DOM Inspect Element 的ID - 单击并检查链接按钮,但全部都是静脉。
然后我尝试了不同的方法,我厌倦了使用 Client.RegisterStartupScript 从代码后面运行JavaScript。我使用StartupScript,以便脚本在关闭body和form标记之前在文档末尾运行,以便在引用之前创建所有元素。使用这种方法,我能够显示jQuery弹出窗口,但仍然是旧问题,我必须调用代码的事件处理程序,如JavaScript中的 btndelete_click(对象发送者EventArgs e),并且它不会发生。
这是我的代码:
网络表格
<asp:GridView ID="gvDoctors" runat="server" AutoGenerateColumns="false" OnRowDataBound="gvDoctors_RowDataBound">
<columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HiddenField ID="hdnUserID" runat="server" value='<%#DataBinder.Eval(Container.DataItem, "UserID")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete">
<ItemTemplate>
<asp:LinkButton runat="server" ID="btnDelete" ClientIDMode="Static" CssClass="test" OnClientClick="return stopASPOnClick()" OnClick="btnDelete_Click">Delete
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</columns>
</asp:GridView>
<script type="text/javascript">
$(document).ready(function () {
var bootstrapButton = $.fn.button.noConflict();
$.fn.bootstrapBtn = bootstrapButton;
});
function openDialog() {
$('#dialog-delete').dialog({
resizable: false,
height: 150,
width: 375,
autoOpen: false,
modal: true,
buttons: {
Delete: $("#dialog-delete").on('click', function (e) {
document.getElementsById('<%= gvDoctors.FindControl("btnDelete").ClientID%>').click();
$(this).dialog("close");
}),
Cancel: $("#dialog-delete").on('click', function () {
$(this).dialog("close");
})
}
});
$('.test').click(function (e) {
$('#dialog-delete').dialog('open');
})
}
function stopASPOnClick() {
return false;
}
</script>
所以被问到的问题是如何能够获得嵌套在父控件中的子控件的id,比如网格中的链接按钮,这样我就可以从代码后面调用它的事件处理程序,或者无法在服务器控件中检索与JavaScript(客户端)相同的子控件ID,并像上面链接的链接一样调用它们的事件处理程序。提前致谢。
注意: - 我还在document.Ready中尝试过对话框脚本而没有在功能中指定它们