簡體   English   中英

對Gridview中的數據綁定文本框進行數字排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM