无法使用gridview正确排序数据

时间:2013-06-01 06:47:32

标签: c# sorting gridview

我想对整数数据进行排序,但我想让它更容易阅读,如果我有像1000000000这样的数据我希望它显示1,000,000,000所以我在mysql中使用这个查询;

format(col_name,0)

我尝试使用gridview在C#中使用sort函数对其进行排序,我使用它来排序gridview;

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
    tempExp = e.SortExpression;
    Session["sort"] = tempExp;
    showData();
}
void showData()
{
    tempExp = (string)Session["sort"];
    sortProperty = SortDirection.Descending;
    sortedView = new DataView(dataset); 
    sortedView.Sort = tempExp + " Desc"; 
    GridView1.DataSource = sortedView; 
    GridView1.DataBind();
}

但是当我尝试对data2进行排序时会发生这种情况;

+================+=================+
|     data1      |      data2      |
+================+=================+
|     21,039,000 |               6 |
|     30,080,000 |           4,062 |
|    209,120,040 |          28,692 |
|    201,200,900 |           2,115 |
|      1,100,900 |          15,858 |
+================+=================+

我该如何解决?

2 个答案:

答案 0 :(得分:1)

第一个解决方案

使用C#代码进行格式化。

int num = 11111111;
string s = num.ToString("N0");

第二个解决方案

在sql查询中包含原始的int列以及格式化的值&在原始int列和&中应用排序绑定gridview中的格式化列以供显示。

答案 1 :(得分:0)

一个解决方案可能是在mySQL中的查询中,您将同时拥有Data1Data2的格式化版本和未格式化的版本,然后根据未格式化的版本对其进行排序,因此您的查询看起来像这样:

SELECT Data1 as A, format(Data1,0) as 'Data1', 
Data2 as B, format(Data2,0) as 'Data2' 
FROM `tabletest`

然后,如果用户点击使用Data1进行排序,那么您将在'A'(上面的Data1的别名)而不是Data1(格式化版本)中对其进行排序,但是如果通过{{ 1}}然后在Data2(再次作为别名)。所以,你的代码看起来像这样:

'B'

所以,如果你观察那里我只是检查用户想要排序的列,并将其切换到非格式化的Sorter列,该列为'A'(对于void showData() { tempExp = (string)Session["sort"]; sortProperty = SortDirection.Descending; sortedView = new DataView(dataset); String newSort = tempExp == 'Data1' ? 'A' : 'B'; // Use the Alias to sort sortedView.Sort = newSort + " Desc"; GridView1.DataSource = sortedView; GridView1.Columns['A'].Visible = false; // Hide sorting column A to the user GridView1.Columns['B'].Visible = false; // Hide sorting column B to the user GridView1.DataBind(); } )或'B'(对于Data1)喜欢:

Data2

然后从用户的眼睛中隐藏分拣机列,但请务必在将其分配到String newSort = tempExp == 'Data1' > 'A' : 'B'; // Use the Alias to sort sortedView.Sort = newSort + " Desc"; 的{​​{1}}之后将其放置,否则您首先没有要说的列。

DataSource