В настоящее время у меня есть сетка, которая заполняется хранимой процедурой. Эта хранимая процедура не может быть изменена. На моей странице у меня есть раскрывающийся список. В этом раскрывающемся списке содержатся все имена столбцов для gridview. Когда пользователь нажимает на значение, gridview сортируется по этому столбцу.Сортировка текстовых полей данных в Gridview численно
Все это не проблема. Однако проблема возникает, когда я пытаюсь сортировать один из столбцов в хронологическом порядке. У меня есть это:
<asp:TemplateField HeaderText="RollNo" SortExpression="RollNo" >
<ItemTemplate>
<asp:TextBox ID="RollNoBox" runat="server" MaxLength="2" AutoCompleteType="None" Width="35px"
Text='<%# Bind("RollNo") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
Когда я нажимаю на эту колонку для сортировки, он ведет себя так, как это:
Original: Actual Sorted:
1 null
2 null
3 null
4 null
5 1
6 2
7 3
8 4
9 5
10 6
11 7
null 8
null 9
null 10
null 11
Однако, я хочу своего рода, чтобы быть таким же, как оригинал (Так что я могу добавить дополнительные фильтры).
Как я могу это сделать?
Вот моя функция сортировки:
Protected Sub SortGrid()
Dim sortexpression As String
If DropDownList1.SelectedValue <> "Select" Then
sortexpression = DropDownList1.SelectedValue
End If
M1SchedView.Sort(sortexpression, SortDirection.Ascending)
End Sub
Это немного переделан из моей реальной функции, как у меня есть несколько видов на моей странице.
EDIT: Я смог получить отредактированный SP, чтобы столбец стал целым числом. Однако теперь он помещает нулевые значения перед номерами. Если бы это можно было переключить, я бы установил.
показать нам свою функцию сортировки! – esskar
Ваше поле «RollNo» представляет собой строку вместо числа, поэтому она сортируется так. Если вы не можете изменить SP, чтобы значение было числовым, вы должны изменить его в своем коде. Если вы используете какой-то тип EF, это должно быть легко. Если вы используете sqldatasource и позволяете ему заполнять данные, это не так просто. – Steve
Я использую sqldatasource, который вызывает хранимую процедуру. – Wyatt