在 jquery 模式对话框中使用 asp:gridview 和添加新行按钮
Posted
技术标签:
【中文标题】在 jquery 模式对话框中使用 asp:gridview 和添加新行按钮【英文标题】:using asp:gridview with add new row button in jquery modal dialog 【发布时间】:2015-04-21 12:30:26 【问题描述】:我有一个带有几个模板字段(用于下拉菜单)的网格视图,如果我将它放在我用作模式对话框的 DIV 之外,它工作正常。 Grid 具有 onrowdatabound 和 OnRowDeleting 事件以及一个用于向网格添加新行的按钮。当我试图将此网格移动到模态对话框时,添加按钮停止工作。点击事件在后面的代码中编码,它不会触发。谁能帮我理解我应该如何处理它? 任何帮助将不胜感激。提前谢谢你
<div id="dialog" >
<asp:GridView ID="grPlan" runat="server"
ShowFooter="True"
AutoGenerateColumns="False"
CellPadding="4" ForeColor="#333333"
GridLines="None"
onrowdatabound = "GridView_RowDataBound"
OnRowDeleting = "GridView_RowDeleting" >
<Columns>
<asp:BoundField HeaderText="ID" DataField="id" />
<asp:TemplateField HeaderText="Program>">
<ItemTemplate >
<asp:DropDownList ID="ddlProgModal2" runat="server" AppendDataBoundItems="true" AutoPostBack="false" DataTextField="Prog"
DataValueField="ProgID" />
</ItemTemplate >
</asp:TemplateField>
<asp:TemplateField HeaderText="EF">
<ItemTemplate >
<asp:DropDownList ID="ddlAnneeFiscaleModal2" DataTextField="EtendueLong" DataValueField="EtendueLong" runat="server"
AppendDataBoundItems="true" AutoPostBack="false"/>
</ItemTemplate >
</asp:TemplateField>
<asp:TemplateField HeaderText="Approbations">
<ItemTemplate >
<asp:DropDownList ID="ddlApprobationModal2" runat="server" AppendDataBoundItems="true" AutoPostBack="false"
DataTextField="Approb" DataValueField="ApprobationID"/>
</ItemTemplate >
</asp:TemplateField>
<asp:TemplateField HeaderText="Fonds">
<ItemTemplate >
<asp:TextBox ID="txtFondsModal2" runat="server" AutoPostBack="false" MaxLength="15" Width = "120" onkeypress="return
validateFloatKeyPress(this,event);" />
</ItemTemplate >
<FooterStyle HorizontalAlign="Right" />
<FooterTemplate>
<asp:Button ID="ButtonAdd" runat="server" Text="Add" OnClick="ButtonAdd_Click" />
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#EFF3FB" />
<EditRowStyle BackColor="#2461BF" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="Black" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
</div>
$("#dialog").dialog( 自动打开:假, 模态:假, 宽度:600, 身高:520, 可调整大小:假, closeOnEscape:假, 打开:函数(事件,用户界面) //调试器; $(".ui-dialog-titlebar-close").hide(); $('.ui-dialog').css("left", "400px"); $('.ui-dialog').css("top", "300px"); $('.ui-dialog').css("位置", "绝对"); , 标题: '', 纽扣: 取消:函数() $(this).dialog('close'); , '好的':函数() $(this).dialog('close'); 返回真; );
【问题讨论】:
【参考方案1】:你可以通过三种方式做你想做的事,
1) 将 gridview
包裹在 UpdatePanel
中,然后将 PostbackTrigger
设置为添加按钮控件。
2) 您可以使用gridview.RowCommand
事件。它处理gridview
.Here is more info on it的单元格内的所有按钮相关事件
3) 您可以使用jquery
强制postback
使用__dopostback()
Here is more info on it 在按钮单击上。
【讨论】:
您好,非常感谢您的回答。我尝试了第一个,因为它看起来很简单 - 但它没有用 我已经尝试了第一个(在前端添加了 postbacktrigget,并在使用脚本管理器尝试了代码后)。当我打开模态对话框并单击按钮时 - 没有任何间隙。它不会从 Jquery 对话框中触发 click 事件。第二个选项也不起作用。我的按钮不在 gridview 单元格中 - 它位于网格页脚中,或者可以放置在网格的外侧。单击它会在网格中添加一个新行(带有模板字段),然后绑定一个行。 第三个选项:我搞砸了。我浏览了该示例并在页面加载时添加了所有输入和函数 __doPostBack 以及 Request.Form["__EVENTTARGET"] 但是当我运行我的应用程序时,我在 document.Form1.__EVENTTARGET.value = eventTarget 上遇到错误。如果我的页面上没有标题或正文(它在 Master 内部)并且我的 html 在更新面板/contentTemplate 内部)。我应该将此功能和 Request.Form["__EVENTTARGET"] 移至 Master 吗?非常感谢您的帮助。我最近才开始使用 jQuery,感觉很迷茫。以上是关于在 jquery 模式对话框中使用 asp:gridview 和添加新行按钮的主要内容,如果未能解决你的问题,请参考以下文章