[英]Sorting databound textboxes in Gridview numerically
我目前有一個由存儲過程填充的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
這與我的實際功能有所不同,因為我的頁面中有多種類型。
編輯:我能夠編輯SP,以便該列現在是整數。 但是,現在它將空值放在數字之前。 如果可以切換的話,我會被設置的。
RollNo
似乎是一個string
添加另一個屬性int RollNoNumeric
並對其進行定義
public int RollNoNumeric
{
get { return string.IsNullOrEmpty(this.RollNo)
? int.MaxValue
: Convert.ToInt32(RollNo); }
}
然后將您的SortExpression更改為
SortExpression="RollNoNumeric"
RollNo是字符串,將其轉換為數字
<%# Bind("RollNo", "{0:N2}") %>
http://msdn.microsoft.com/zh-CN/library/2d76z3ck(v=vs.110).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.