我在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位于母版页内部。谢谢。
我已经找到了解决方案。我已经使用scriptmanager在页面上注册了asyncpostbackcontrol事件,并且现在可以使用!
代码是这样的:
ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(tbValue);
谢谢您的帮助!
考虑内容页面的呈现方式。内容页通常不应包含用于引用母版页的“ Page”标签(以及可能用于程序集的注册标签等)之外的任何代码。您希望出现在“内容”选项卡之外的任何代码都应实际放置在母版页中。
但是,如果您需要更多帮助,这是一个很好的教程:
您可以这样想:当您查看作为内容页面的asp网页时,母版页是实际页面。它将始终是显示的页面。当您将ContentPlaceHolder放入内容页面时,它会忽略母版页上相应ContentPlaceHolder中的任何代码。同样,如果将代码放置在内容页面中但位于ContentPlaceHolder之外,则也将忽略该代码。
FYI:就像我说的那样,这只是我对它的抽象理解,所以如果我错了,请随时纠正我!! :)祝您网站好运。
就我而言,Gridview RowCommand可以由updatePanel中的<asp:Button>
触发(我使用Visual Studio 2012)