带有gridview的Updatepanel不会触发事件

问题描述 投票:2回答:3

我在updatepanel内有一个带有gridview的用户控件。

我已尝试触发所有网格事件,因为当我在gridview上工作时,母版页永远不应回发,但它不起作用。母版页总是后置!

我能做什么?

这是myuser控件的asp.net代码:

<asp:UpdatePanel ID="upFeatureCustomer" runat="server" ChildrenAsTriggers="true" >
<ContentTemplate>
<asp:GridView ID="gvFeatureCustomer" runat="server" DataKeyNames="Id"  
        AutoGenerateColumns="False" ClientIDRowSuffix="Id" 
    OnRowDataBound="dtgdResult_RowDataBound" ClientIDMode="Static" 
        ShowHeader="false">
    <Columns>
        <asp:TemplateField HeaderText="Nome" FooterText="Nome" SortExpression="Name">
            <ItemTemplate>
                <asp:DropDownList ID="ddlName" ClientIDMode="Predictable" runat="server" DataValueField="id" DataTextField="Name">
                </asp:DropDownList>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Valore" FooterText="Valore" SortExpression="Value">
            <ItemTemplate>
                <asp:TextBox id="txtValue" AutoPostBack="true" runat="server" CssClass="auto-feature" OnTextChanged="txtValue_TextChanged"></asp:TextBox>
            </ItemTemplate>
        </asp:TemplateField>
         <asp:TemplateField HeaderText="Delete" FooterText="Delete" Visible="true" HeaderStyle-Width="25"
                ItemStyle-HorizontalAlign="Center">
                <ItemTemplate>
                    <asp:HyperLink ID="Delete" runat="server" NavigateUrl='<%# DataBinder.Eval(Container, "DataItem.Id", "javascript:openDeleteDialog(\"{0}\");")%>'
                        ImageUrl="~/images/delete2.png" ToolTip="Delete">
                    </asp:HyperLink>
                </ItemTemplate>
            </asp:TemplateField>
    </Columns>
</asp:GridView>

</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="DataBinding" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="DataBound" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="Disposed" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="Init" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="Load" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="PageIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="PageIndexChanging" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="PreRender" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowCancelingEdit" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowCommand" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowCreated" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowDataBound" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowDeleted" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowDeleting" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowEditing" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowUpdated" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="RowUpdating" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="SelectedIndexChanging" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="Sorted" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="Sorting" />
<asp:AsyncPostBackTrigger ControlID="gvFeatureCustomer" EventName="Unload" />
</Triggers>

</asp:UpdatePanel> 

ScriptManager位于母版页内部。谢谢。

c# asp.net c#-4.0 user-controls updatepanel
3个回答
1
投票

我已经找到了解决方案。我已经使用scriptmanager在页面上注册了asyncpostbackcontrol事件,并且现在可以使用!

代码是这样的:

ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(tbValue);

谢谢您的帮助!


0
投票

考虑内容页面的呈现方式。内容页通常不应包含用于引用母版页的“ Page”标签(以及可能用于程序集的注册标签等)之外的任何代码。您希望出现在“内容”选项卡之外的任何代码都应实际放置在母版页中。

但是,如果您需要更多帮助,这是一个很好的教程:

您可以这样想:当您查看作为内容页面的asp网页时,母版页是实际页面。它将始终是显示的页面。当您将ContentPlaceHolder放入内容页面时,它会忽略母版页上相应ContentPlaceHolder中的任何代码。同样,如果将代码放置在内容页面中但位于ContentPlaceHolder之外,则也将忽略该代码。

FYI:就像我说的那样,这只是我对它的抽象理解,所以如果我错了,请随时纠正我!! :)祝您网站好运。


0
投票

就我而言,Gridview RowCommand可以由updatePanel中的<asp:Button>触发(我使用Visual Studio 2012)

© www.soinside.com 2019 - 2024. All rights reserved.