所以我在这里。我尽我所能做到了,我是asp.net网络新手,我在互联网上打了一个星期的头,阅读了数百篇文章,但是我完全没有解决我的问题。 我正在使用网格视图我有链接按钮,我想验证与jQuery UI对话框按钮。首先我试图从代码后面附加事件处理程序,即btnDelete_click(object sender,EventArgs e)删除按钮点击jQuery对话框,从here实现我完全失败了,我看到了,如果它一个独立的按钮,不在像网格视图等父容器中,它的工作原理与上面的链接一样,但如果它在网格中,它会一直说在当前上下文中不存在提供的Id。我试着尽我所能:无法访问从gridview的子控件从javascript
1)制造按钮的ClientIDMode =静态和尝试使用的document.getElementById( '<%= btnDelete.ClientID%>')来访问它单击();其中btnDelete的ID是链接按钮。错误我得到btnDelete不存在于当前上下文。 。
2)删除静态选项和二手的document.getElementById(” <%= gvDoctors.FindControl( “<%= btnDelete.ClientID%>”)点击();的错误,我得到的是对象引用不设置为一个对象的一个实例。
3)带和不带静态ID模式我尝试了所有的方法,也用于的UniqueID甚至我从DOM复制ID检查的Elemen在右键单击并检查链接按钮后,全部静止,然后选择“”。
然后我尝试了不同的方法我厌倦了从代码后面运行JavaScript使用Client.RegisterStartupScript。我使用StartupScript,以便在关闭正文和表单标签之前,脚本运行在文档的末尾,以便在引用之前创建的所有元素均为。使用这种方法,我能够显示jQuery弹出窗口,但仍然是老问题,我必须调用后台代码的事件处理程序,如来自JavaScript的btndelete_click(对象发件人EventArgs e),并且没有发生。
这里是我的代码:
的Web表格
<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像网格中的链接按钮这样的父控件,以便我可以从后面的代码中调用其事件处理函数,或者无法将与服务器控件中相同的子控件ID检索到JavaScr ipt(客户端)并调用他们的事件处理程序,就像上面链接的那样。提前致谢。
注: -我也试过文档中的对话框脚本。准备好并且没有在功能上指定它们
[**'RowCommand' **](https://msdn.microsoft.com/library/system.web.ui.webcontrols.gridview.rowcommand( v = vs.110).aspx)可能会有所帮助 – Phiter