ASP.Net GridView Пейджинг / сортировка ломается - PullRequest
1 голос
/ 23 июня 2011

Итак, я создал сеточное представление и обработчики пейджинга / сортировки, которые я изучил из руководств и адаптировал для размещения двух моих сеточных представлений:

paging

    protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        ((GridView)sender).PageIndex = e.NewPageIndex; // updatepanel allows this to happen without refreshing

    }

сортировка

protected void GridView_Sort(object sender, GridViewSortEventArgs e)
        {
            string sortdir;

            ViewState["SortExpression"] = e.SortExpression;

            if (GridViewSortDirection.ToString() == "Ascending")
            {
                sortdir = "ASC";
                GridViewSortDirection = SortDirection.Descending;
            }
            else
            {
                sortdir = "DESC";
                GridViewSortDirection = SortDirection.Ascending;
            }

            var expression = e.SortExpression;

            var gv = sender as GridView;

            DataView gridv = ((DataSet)gv.DataSource).Tables[0].DefaultView; // get GridView datasource as a DataView as it is easier to sort

            gridv.Sort = expression + " " + sortdir; // strict formatted string here; e.g: Subject ASC

            gv.DataSource = gridv;

            gv.DataBind();
        }

    }

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

Сами представления сетки заполняются правильными данными и отображаются.Любые предложения о том, где искать, если вы не можете точно сказать, что не так, было бы замечательно.

Также у меня есть настройка точек останова для наблюдения за вызовами обработчиков событий, и они это делают.

РЕДАКТИРОВАТЬ:

<asp:GridView ID="CurrentGridView" runat="server" CssClass="CurrentGridView" 
                                AllowPaging="True" AllowSorting="True"
                                AutoGenerateColumns="False" CellPadding="4" EnableModelValidation="True" ForeColor="#333333"
                                 OnSorting="GridView_Sort"
                                GridLines="None" Width="600px" EnableSortingAndPagingCallbacks="True" 
                                 OnPageIndexChanging="GridView_PageIndexChanging" >
                                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                                <Columns>
                                    <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" >
                                    <ItemStyle Width="30px" />
                                    </asp:BoundField>
                                    <asp:HyperLinkField DataNavigateUrlFields="Url" DataTextField="Subject" 
                                        HeaderText="Subject" SortExpression="Subject" >
                                    <ControlStyle CssClass="SubjectColumn" />
                                    <ItemStyle Width="200px" />
                                    </asp:HyperLinkField>
                                    <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status">
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:BoundField>
                                    <asp:BoundField DataField="Created" HeaderText="Logged Date" 
                                        SortExpression="Created" HtmlEncodeFormatString="False">
                                        <ControlStyle CssClass="LoggedDate" />
                                        <ItemStyle HorizontalAlign="Right" Width="80px" />
                                    </asp:BoundField>
                                </Columns>
                                <EditRowStyle BackColor="#999999" />
                                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <PagerStyle CssClass="PagerStyle"  ForeColor="White" HorizontalAlign="Center" />
                                <RowStyle BackColor="#F7F6F3" VerticalAlign="Top" ForeColor="#333333" />
                                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                            </asp:GridView>

и

<asp:GridView ID="HistoricalGridView" runat="server" 
                                AutoGenerateColumns="False" CellPadding="4" EnableSortingAndPagingCallbacks="True" EnableModelValidation="True" ForeColor="#333333"

                                GridLines="None" Width="600px">
                                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                                <Columns>
                                    <asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
                                    <asp:HyperLinkField DataNavigateUrlFields="Url" DataTextField="Subject" 
                                        HeaderText="Subject" SortExpression="Subject">
                                    <ControlStyle ForeColor="#5D7B9D" />
                                    </asp:HyperLinkField>
                                    <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" >
                                        <ItemStyle HorizontalAlign="Center" />
                                    </asp:BoundField>
                                    <asp:BoundField DataField="Created" HeaderText="Logged Date" SortExpression="Created">
                                        <ItemStyle HorizontalAlign="Right" Width="80px" />
                                    </asp:BoundField>
                                </Columns>
                                <EditRowStyle BackColor="#999999" />
                                <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                                <PagerStyle CssClass="PagerStyle" ForeColor="White" HorizontalAlign="Center" />
                                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                            </asp:GridView>

РЕДАКТИРОВАТЬ: я вижу, что DataSets обнуляются, когда они попадают в обработчики сортировки / подкачки, но у меня ничего нетявная их повторная инициализация или обнуление.

1 Ответ

1 голос
/ 23 июня 2011

Вы писали: "РЕДАКТИРОВАТЬ: я вижу, что наборы данных обнуляются к тому времени, когда они попадают в обработчики сортировки / подкачки, но у меня нет ничего явного их повторной инициализации или обнуления".

Набор данных не сохраняется сеткой в ​​viewstate или чем-либо еще, вам нужно перепривязывать каждый раз, когда вы вызываете sort или страницу.Попробуйте и посмотрите, решит ли это проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...