2013-06-01 118 views
3

我想整理我的整数数据,但我想使它更容易阅读,如果我有像1000000000数据我想它显示1,000,000,000所以我在mysql中使用此查询;我试着用C#中的排序函数使用gridview对它进行排序,我用它来排序gridview;无法正确排序数据int 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 | 
+================+=================+ 

我该如何解决它?

+1

如果您没有应用排序功能,您如何期待它被排序? –

+3

一般来说,我不会在SQL查询中应用数字的格式。这就是用户界面的用途。有一个[如何:在Windows窗体DataGridView控件中格式化数据](http://msdn.microsoft.com/en-us/library/vstudio/f9x2790s(v = vs.100).aspx),它可能会帮助你。 – Dirk

+1

为什么这个标记为MySQL?如果您可以在SQL中进行排序,请显示查询。如果没有,请移除标签。 –

回答

1

首先解决

不要在C#代码的格式。

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

解决方法二

包括在SQL查询的原始INT列与格式化值&沿应用在原有INT列排序&绑定格式化列在GridView控件来显示。

+0

如何在C#代码中进行格式化? – Darjeeling

+0

查看我更新的答案 - string s = num.ToString(“N0”); –

0

一种解决方案可能是在MySQL的查询,您将两者兼而有之Data1Data2,然后格式化版本和格式化的版本根据未格式化的版本进行排序,所以你的查询应该是这样的:

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

然后,如果用户点击使用Data1,那么你将在'A'(别名以上数据1)它梳理排序,而不是Data1(格式版本),但如果通过Data2然后'B'(同样别名)。所以,你的代码看起来这样:

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(); 
} 

所以,如果你看到那里,我只是先检查用户想要进行排序,并切换到非格式化的分拣机柱要么是“A”的列(对于Data1)或“B”(为Data2),如:

String newSort = tempExp == 'Data1' > 'A' : 'B'; // Use the Alias to sort 
sortedView.Sort = newSort + " Desc"; 

,然后隐藏从用户的眼睛分拣机列,但一定要把它被分配到DataGridViewDataSource后,否则你就没有列首先讲的是。

GridView1.DataSource = sortedView; 
GridView1.Columns['A'].Visible = false; // Hide sorting column A aka Data1 to the user 
GridView1.Columns['B'].Visible = false; // Hide sorting column B aka Data2 to the user