Пользовательская страница Gridview в элементе управления мастера не работает правильно в asp.net - PullRequest
5 голосов
/ 05 января 2012

У меня есть страница, где гости могут быть выбраны.

Эта страница содержит панель обновлений, в панели обновлений есть элемент управления мастера, а в элементе управления мастера - вид сетки (Панель-> Панель обновления -> Элемент управления -> Вид сетки)

Теперь пейджинг не работает, я искал ответы в Интернете, но не нашел правильного ответа. Я использую пользовательский пейджинг.

Когда я хочу изменить номер страницы (на вторую или последнюю страницу), он работает нормально. Но когда я хочу выбрать строку или перейти на другую страницу, вид сетки не работает правильно. Когда я выбираю строку на второй или последней странице (другие страницы не работают), выбранный гость (элемент) всегда является одной из первых страниц. Когда я хочу перейти на другую страницу (со второй или последней страницы), она не работает и остается на выбранной странице.

Есть ли способ решить эту проблему?

часть кода:

               <asp:Panel ID="PnlRe" Style="display: none; ... >
    <asp:UpdatePanel ID="UpdtPnlDetail" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
        ...
        <asp:Wizard ID="wzd" runat="server" ... >
            ...
            <asp:WizardStep ID="WizardStep3" runat="server" Title="Naam">
                        ...
                           <asp:Gridview ID="Gridview1" runat="server" AutoGenerateColumns="False"
                               DataKeyNames="GastID,Versie" DataSourceID="odsGasten" EmptyDataText="...."
                               OnRowCommand="Gridview1_RowCommand" OnPageIndexChanging="Gridview1_PageIndexChanging"
                               OnPageSizeChanging="Gridview1_PageSizeChanging" OnSearching="Gridview1_Searching"
                               OnSorting="Gridview1_Sorting" OnRowDataBound="Gridview1_RowDataBound"
                               CausesValidation="False" meta:resourcekey="..." PagerType="Custom"
                               ShowFilter="True" ShowInsertRecord="True" ShowPageSizer="True" UseSubmitBehaviour="False">
                               <Columns>
                                   <asp:TemplateField ShowHeader="False" meta:resourcekey="...">
                                       <ItemTemplate>
                                           <asp:ImageButton runat="server" CommandName="Select" CausesValidation="False" SkinID="uprowbutton"
                                               ToolTip="..." ID="ImgBtnSelect" meta:resourcekey="...">
                                           </asp:ImageButton>
                                       </ItemTemplate>
                                   </asp:TemplateField>
                                   ... Boundfields ...
                               </Columns>
                           </asp:Gridview>
                        ...
                    </asp:WizardStep>
                    ... 
    </asp:Wizard>
    </ContentTemplate>
</asp:UpdatePanel>

protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    this.odsGasten.FilterExpression = searchText;
    this.Gridview1.DataBind();
    this.UpdtPnlDetail.Update();
}

Ответы [ 3 ]

0 голосов
/ 08 марта 2012

Я вижу, что this.GridView1.DataBind () вызывается в GridView1_PageIndexChanging, но где хранится и обновляется currentPageIndex с индексом страницы, к которому вы хотите перейти, и когда это происходит в процессе?

0 голосов
/ 20 марта 2012

Похоже, у меня проблема с состоянием зрения.

Вы должны убедиться, что между Init и Load у вас установлен источник сетки, либо из viewstate, либо из новой привязки.

0 голосов
/ 13 февраля 2012

Есть хитрый способ добиться этого, вы должны манипулировать своим источником данных.Например, если вы используете таблицу данных, вы должны выбрать первые десять элементов dt и связать их с сеткой, а когда нажмете следующую кнопку, получите следующие десять элементов dt и привяжите их к gridview.это упростит вашу задачу и повысит производительность вашей страницы.

...