asp.net另一个updatepanel无法正常工作

时间:2011-11-28 20:52:00

标签: asp.net ajax updatepanel

我在aspx页面上添加了3个updatepanel。两个updatepanel包括gridview.And我做了gridview paging.two按钮在点击时填充这个gridviews.I设置触发器和条件状态。第三个updatepanel包括textbox.And我设置updatemode有条件的,触发第三个按钮

我的问题,当我首先点击第三个按钮时,我从gridview中选择已检查的数据字段,成功运行。 但是当我点击一次后点击时,第三个updatepanel和gridview分页无效。

<asp:UpdatePanel ID="UpdatePanelWorkFLow" runat="server">
    <%--<Triggers>
    <asp:PostBackTrigger ControlID="btnGenerate" />
    </Triggers>--%>
    <ContentTemplate>
        <asp:GridView ID="GridWorkFlow" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            EnableSortingAndPagingCallbacks="false" CellPadding="4" ForeColor="#333333" GridLines="None"
            OnPageIndexChanging="GridWorkFlow_PageIndexChanging">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                <asp:TemplateField ShowHeader="true" HeaderText="Seç">
                    <ItemTemplate>
                        <asp:CheckBox ID="checkWorkFlow" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField Visible="False">
                    <ItemTemplate>
                        <asp:Label ID="labelWorkFlowId" runat="server" Text='<%# Eval("WorkFlowId")%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="WorkFlow Adi">
                    <ItemTemplate>
                        <asp:Label ID="labelWorkFlowName" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Birincil Entity Adi">
                    <ItemTemplate>
                        <asp:Label ID="labelPrimaryEntity" runat="server" Text='<%# Bind("PrimaryEntity") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField Visible="true" HeaderText="Durum Açiklamasi">
                    <ItemTemplate>
                        <asp:Label ID="labelWorkFlowStaus" runat="server" Text='<%#  GetStatusCodeText(DataBinder.Eval(Container.DataItem,"StatusCode"))%>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnWorkFLow" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

我的gridview分页代码

    WorkFlowDataBind();
    GridWorkFlow.PageIndex = e.NewPageIndex;
    GridWorkFlow.DataBind();

我的第三个按钮代码

    string userQueryId = GetUserQueryId();
    string userqueryName = GetUserQueryName();
    string workFlowId = GetWorkFlowId();
    string primaryEntityName = GetWorkFlowPrimaryEntity();
    GetWorkFlowName();

单击加载gridview时的第一个和第二个按钮

    Datatable dtUserQuery=GetDataTable();
    GridUserQuery.DataSource = dtUserQuery;
    GridUserQuery.DataBind()

我该如何解决。

1 个答案:

答案 0 :(得分:0)

逻辑是..如果在同一页面中有一个或多个更新面板,则所有更新面板的属性应相同,例如更新面板数据是否相互依赖

Update Mode : Always
EnableViewState : true(if you are using it)

或者,当模式为条件时,您可以显式更新“更新”面板

我们假设您有两个更新面板,例如up1和up2。 您已将标签放在up1中,而另一个窗体或按钮放在up2中。 现在在up2中的click事件中,应该更新放在up1中的标签而不加载整个页面。设置以下内容

  1. 设置EnableParitialRendering ='True'(脚本管理器)

  2. 设置更新模式:条件(up1)

  3. 设置更新模式:始终(up2)。所有设置都在这里完成。单击up2中的按钮,执行您的工作并调用up1.Update();就是这样。