На моей веб-странице есть элемент управления GridView, который использует пейджинг. Я вижу, что появляются дублирующиеся строки, но я знаю, что их нет в данных, и они, похоже, исчезают, когда я сортирую по столбцу, отличному от используемого по умолчанию. Однако они снова появляются при сортировке по этому исходному столбцу.
Вот фрагмент кода ascx;
<asp:GridView
ID="gvResults"
AllowPaging="True"
CssClass="DataTable"
runat="server"
AutoGenerateColumns="False"
OnRowDataBound="gvResults_RowDataBound"
AllowSorting="True"
Width="750px"
OnSorting="gvResults_Sorting"
PagerSettings-Mode="NumericFirstLast"
PagerSettings-FirstPageText="<<"
PagerSettings-LastPageText=">>"
PagerSettings-PageButtonCount="5"
PagerSettings-Position="Bottom"
PagerStyle-CssClass="paginationContainer"
PagerStyle-HorizontalAlign="Left"
OnPageIndexChanging="gvResults_PageIndexChanging">
<PagerSettings
FirstPageText="<<"
LastPageText=">>"
Mode="NumericFirstLast"
PageButtonCount="5" />
<PagerStyle CssClass="paginationContainer" HorizontalAlign="Left" />
Это может не иметь отношения к моей проблеме, но я включаю ее на всякий случай.
Теперь я полагаю, что проблема, возможно, вызвана тем, что существует определенный сценарий, в котором столбец, по которому сетка сортируется по умолчанию, будет заполнен одинаковым значением для многих строк. Это может показаться странным, но столбец - это близость, а сетка отображает результаты поиска близости, поэтому возможно, что некоторые поиски вернут много результатов с той же близостью.
Проблема с дублирующимися результатами возникает только тогда, когда число строк с одинаковой близостью превышает количество результатов, отображаемых на странице (в моем случае, 10).
Всякий раз, когда это происходит, я вижу строку, например, 2-я страница, а также на 3-й странице (однако, никогда не на той же странице). Сортировка по другому столбцу и просмотр результатов поиска, кажется, устраняет проблему.
Теперь, после долгого взаимодействия головы и стены, я пришел к умозрительному объяснению;
То, что это вполне ожидаемое поведение, потому что не существует определенного способа сортировки строк, когда поля идентичны. Какой-то другой механизм должен решать, как сортировать строки, и каким бы ни был этот механизм, он вызывает проблему дублирования при каждом просмотре результатов.
Я на правильном пути? И если так, как я могу решить эту проблему? Есть ли способ сортировки по второму столбцу в дополнение к указанному пользователем?