Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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
C# 带有EditItemTemplate的面板DefaultButton和GridView控件_C#_Asp.net_Gridview_Panel_Defaultbutton - Fatal编程技术网

C# 带有EditItemTemplate的面板DefaultButton和GridView控件

C# 带有EditItemTemplate的面板DefaultButton和GridView控件,c#,asp.net,gridview,panel,defaultbutton,C#,Asp.net,Gridview,Panel,Defaultbutton,我在页面上有一个GridView控件,它的面板上有一个DefaultButton。我试图让“更新”按钮在用户编辑行时使用Enter键。它与鼠标配合得很好。当我单击“更新”时,该行将恢复为查看模式,并显示更新后的值 当GridView位于面板中时,当我按Enter键时,面板的默认按钮(提交页面)会触发,甚至在处理row命令之前,更新就会丢失 当GridView不在面板中时,面板中的其他一些看似随机的按钮会触发,但我所在行的EditItemTemplate中的“Update”按钮不会触发。具体来说,

我在页面上有一个GridView控件,它的面板上有一个DefaultButton。我试图让“更新”按钮在用户编辑行时使用Enter键。它与鼠标配合得很好。当我单击“更新”时,该行将恢复为查看模式,并显示更新后的值

当GridView位于面板中时,当我按Enter键时,面板的默认按钮(提交页面)会触发,甚至在处理row命令之前,更新就会丢失

当GridView不在面板中时,面板中的其他一些看似随机的按钮会触发,但我所在行的EditItemTemplate中的“Update”按钮不会触发。具体来说,页面上有一个CalendarExtender,并且会触发该扩展程序的弹出按钮。完全不是我想要的

我如何才能使其正确运行

以下是我的标记代码的结构:

<asp:Panel ID="Panel1" runat="server" DefaultButton="btnSubmit">

    <!--Form with controls-->

    <asp:ImageButton ID="btnWSPODateCal" runat="server" />
    <!--this button fires when I press enter while editing a grid row:-->
    <ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" 
    TargetControlID="tbPODate" PopupButtonID="btnWSPODateCal" />

    <!--more controls-->

    <div class="button_row">
        <asp:ImageButton ID="btnCancel" runat="server" />
        <asp:ImageButton ID="btnSubmit" OnClick="btnSubmit_Click" />
    </div>
</asp:Panel>
<asp:GridView runat="server">
    <Columns>
        <asp:TemplateField>
            <EditItemTemplate>
                <asp:ImageButton CommandName="MyUpdate" 
                    ID="btnSubmitRow" runat="server"  
                    CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" /> 

试试看。这只是一个猜测

<asp:GridView runat="server">
<Columns>
    <asp:TemplateField>
        <EditItemTemplate>
            <asp:Panel ID="Panel2" DefaultButton="btnSubmitRow" runat="server">
                <asp:ImageButton CommandName="MyUpdate" 
                    ID="btnSubmitRow" runat="server"  
                    CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" />
            </asp:Panel>  

您可能需要在GridView的每一列中放置一个面板。唯一可能出现问题的是面板能够“找到”GridViewRow中的按钮

你也试过了吗

<asp:Panel ID="Panel2" DefaultButton="btnSubmitRow" runat="server">
    <asp:GridView runat="server">
        <Columns>
        <asp:TemplateField>
            <EditItemTemplate>
                <asp:ImageButton CommandName="MyUpdate" 
                    ID="btnSubmitRow" runat="server"  
                    CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" />
...
    </asp:GridView>
</asp:Panel>

...

试试看。这只是一个猜测

<asp:GridView runat="server">
<Columns>
    <asp:TemplateField>
        <EditItemTemplate>
            <asp:Panel ID="Panel2" DefaultButton="btnSubmitRow" runat="server">
                <asp:ImageButton CommandName="MyUpdate" 
                    ID="btnSubmitRow" runat="server"  
                    CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" />
            </asp:Panel>  

您可能需要在GridView的每一列中放置一个面板。唯一可能出现问题的是面板能够“找到”GridViewRow中的按钮

你也试过了吗

<asp:Panel ID="Panel2" DefaultButton="btnSubmitRow" runat="server">
    <asp:GridView runat="server">
        <Columns>
        <asp:TemplateField>
            <EditItemTemplate>
                <asp:ImageButton CommandName="MyUpdate" 
                    ID="btnSubmitRow" runat="server"  
                    CommandArgument="<%# ((GridViewRow) Container).DataItemIndex %>" />
...
    </asp:GridView>
</asp:Panel>

...

您显示它的方式不起作用,因为GridView中的面板无法按id引用默认按钮。我必须在onrowdatabound事件中处理此问题-太麻烦了。我的解决办法是通过scriptmanager刷新页面。我想情况就是这样。我想我会把它扔出去。你显示它的方式不起作用,因为GridView中的面板无法通过id引用默认按钮。我必须在onrowdatabound事件中处理这个问题-太麻烦了。我的解决办法是通过scriptmanager刷新页面。我想情况就是这样。我只是想把它扔出去。