Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模式弹出窗口上的按钮单击事件,在网格视图内未触发_Javascript_Asp.net_Vb.net - Fatal编程技术网

Javascript 模式弹出窗口上的按钮单击事件,在网格视图内未触发

Javascript 模式弹出窗口上的按钮单击事件,在网格视图内未触发,javascript,asp.net,vb.net,Javascript,Asp.net,Vb.net,我有以下问题 场景: 我有一个asp网格,其中有几个列绑定到数据。最后一列已转换为模板字段。此模板字段中有一个按钮,其上连接有一个模式弹出扩展程序。隐藏在该字段内的是一个模式弹出窗口。此模式弹出窗口用于添加新帐户。它包含2个文本框、下拉列表和按钮(“添加”和“取消”)。单击“添加”后,在代码隐藏中插入新帐户后,模式应关闭 问题: 我得到的弹出窗口显示和加载下拉列表从缓存,没有问题。如何让按钮单击事件在代码隐藏中触发。我尝试使用一个JavaScript函数来执行_doPostBack('btnad

我有以下问题

场景: 我有一个asp网格,其中有几个列绑定到数据。最后一列已转换为模板字段。此模板字段中有一个按钮,其上连接有一个模式弹出扩展程序。隐藏在该字段内的是一个模式弹出窗口。此模式弹出窗口用于添加新帐户。它包含2个文本框、下拉列表和按钮(“添加”和“取消”)。单击“添加”后,在代码隐藏中插入新帐户后,模式应关闭

问题: 我得到的弹出窗口显示和加载下拉列表从缓存,没有问题。如何让按钮单击事件在代码隐藏中触发。我尝试使用一个JavaScript函数来执行_doPostBack('btnaddac',''),但它一直返回错误“JavaScript错误:预期对象”。我在谷歌上呆了大约一个小时后才发现,这是因为“btnaddac”没有找到,因为它实际上位于网格视图单元内,无法直接访问。使用页面方法和ajax调用是最后的选择,因为该公司对此有严格的政策,只有在大量书面工作后才允许这样做

守则:

<asp:GridView ID="gvNEA" runat="server" CssClass="gridA_Orange" 
AutoGenerateColumns="False" AllowPaging="True" 
EmptyDataText="No transactions with 'Non Existent Account(s)'" 
ShowHeaderWhenEmpty="True" Width="945px">
<Columns>
    <asp:BoundField HeaderText="Transaction Date" DataField="Transaction_Date" />
    <asp:BoundField HeaderText="Account Number" DataField="Account_Number" />
    <asp:BoundField HeaderText="Description" DataField="Description"/>
    <asp:BoundField HeaderText="Amount" DataField="Amount"/>
    <asp:BoundField HeaderText="Offset Account" DataField="OffsetAccount" />
    <asp:BoundField HeaderText="File Name" DataField="FileName" />
    <asp:BoundField HeaderText="Transaction Type" DataField="TransType" />
    <asp:TemplateField ShowHeader="False">
        <ItemTemplate>
            <asp:Button ID="btnAdd" runat="server" CausesValidation="false" 
                OnClientClick="showPopUp('pupAddAcc');" Text="Add Account" CssClass="ButtonStyle_Gray" />
            <asp:ModalPopupExtender ID="mpeAddAcc" runat="server" 
                BackgroundCssClass="modalBackground" TargetControlID="btnAdd"
                PopupControlID="pnlAddAcc"
                CancelControlID="btnCancelAddAcc" DropShadow="True" 
                Enabled="True">
            </asp:ModalPopupExtender>
            <div id="pupAddAcc">
                <asp:Panel ID="pnlAddAcc" runat="server" BackColor="White" 
                    BorderColor="White" BorderStyle="Solid" BorderWidth="1px" Width="430">                
                    <table align="center" id="tblAddAcc" class="BasicHTMLTable">
                    <asp:HiddenField ID="hfTransType" runat="server" Value='<%# Bind("TransType") %>' />
                        <tr align="center" >
                            <td colspan="2">
                                <asp:Label ID="lblAccountHeader" runat="server" width="390px" Text="Add Account" 
                                CssClass="ButtonStyle_Orange" Height="25px" Font-Bold="true" Font-Size="Large" />
                            </td>
                        </tr>
                        <tr>
                            <td align="right" class="PopupCol">Account Number</td>
                            <td align="left" ><asp:Label ID="lblAccNumber" runat="server" Width="165px" 
                                    Text='<%# Bind("Account_Number") %>' /></td>
                        </tr>
                        <tr>
                            <td align="right" class="PopupCol" >Name</td>
                            <td align="left" ><asp:TextBox ID="txtName" runat="server" Width="165px" />
                                <asp:RequiredFieldValidator ID="rfvName" runat="server" 
                                    ControlToValidate="txtName" Text="*" ValidationGroup="acc" />
                            </td>
                        </tr>
                        <tr>
                            <td align="right" class="PopupCol" >Search Name</td>
                            <td align="left" ><asp:TextBox ID="txtSearchName" runat="server" Width="165px" />
                                <asp:RequiredFieldValidator ID="rfvSName" runat="server" 
                                    ControlToValidate="txtSearchName" 
                                    Text="*" ValidationGroup="acc" />
                            </td>
                        </tr>
                        <tr>
                            <td align="right" class="PopupCol" >Group</td>
                            <td align="left" >
                                <asp:DropDownList ID="ddlGroup" runat="server" Width="170">                                
                                </asp:DropDownList>
                            </td>
                        </tr>
                        <tr>
                            <td align="right" class="PopupCol" >Currency</td>                                    
                            <td align="left" >
                                <asp:DropDownList ID="ddlCurrency" runat="server" Width="170px">
                                </asp:DropDownList>
                            </td>
                        </tr> 
                        <tr>
                            <td align="center" colspan="2">
                                <asp:Button ID="btnAddAcc" runat="server" Text="Add Account" 
                                    CssClass="ButtonStyle_Orange" OnClientClick="javascript:addAccount()" 
                                    ValidationGroup="acc" />  
                                &nbsp&nbsp                      
                                <asp:Button ID="btnCancelAddAcc" runat="server" Text="Cancel" CssClass="ButtonStyle_Orange" />
                            </td>
                        </tr>
                    </table>                
                </asp:Panel>
            </div>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundField HeaderText="RecId" DataField="RecId" Visible="False"/>
</Columns>
单击BTNADDAC时的功能:

function addAccount() {
        _doPostBack('btnAddAcc', '');
    };
代码隐藏函数

Protected Sub btnAddAcc_Click(sender As Object, e As System.EventArgs)
    'Code for inserting new account goes here
End Sub
提前感谢您的帮助和建议。
关于

如果将OnClick设置为服务器端事件,会发生什么

<td align="center" colspan="2"> 
  <asp:Button ID="btnAddAcc" runat="server" Text="Add Account"  
     CssClass="ButtonStyle_Orange" OnClick="btnAddAcc_Click"  
     ValidationGroup="acc" />   
  &nbsp&nbsp                       
  <asp:Button ID="btnCancelAddAcc" runat="server" Text="Cancel" CssClass="ButtonStyle_Orange" /> 
</td> 

 

但是…获取事件引用(即“\uu doPostback”事件)的正确方法是使用
ClientScript在服务器端获取它。GetPostBackEventReference
我最终找到了答案。我不得不使用gridview.row命令事件。它处理gridview单元格中所有与按钮相关的事件

请看一下msdn文档。它应该解释此命令的大部分内容


关于George

我尝试将OnClick设置为服务器端事件,但由于模式弹出窗口的按钮位于网格内,因此无法直接访问。将尝试使用“ClientScript.GetPostBackEventReference”。谢谢您尝试过取消OnClientClick“使用DataGrid的OnCommand事件?是的,我尝试过,但仍然失败。刚刚找到答案,请看一看。无论如何,感谢您通过
ClientScript.GetPostBackEventReference
idea帮助学习新知识。干杯@我不能。弹出窗口一直告诉我“你明天可以接受你自己的答案”,所以我明天会这么做。
<td align="center" colspan="2"> 
  <asp:Button ID="btnAddAcc" runat="server" Text="Add Account"  
     CssClass="ButtonStyle_Orange" OnClick="btnAddAcc_Click"  
     ValidationGroup="acc" />   
  &nbsp&nbsp                       
  <asp:Button ID="btnCancelAddAcc" runat="server" Text="Cancel" CssClass="ButtonStyle_Orange" /> 
</td>