在 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 和添加新行按钮的主要内容,如果未能解决你的问题,请参考以下文章

最初显示的 jQuery 模式对话框验证器

jQuery,MVC3:在模式对话框中提交部分视图表单

单击按钮时显示 jquery 数据表模式对话框不起作用

Jquery Dialog异步模式

jQuery-bootgrid模式对话框

如何在显示效果期间制作 jQuery UI 对话框模式?