2013-06-01 75 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