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