我想对整数数据进行排序,但我想让它更容易阅读,如果我有像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 |
+================+=================+
我该如何解决?
答案 0 :(得分:1)
第一个解决方案:
使用C#代码进行格式化。
int num = 11111111;
string s = num.ToString("N0");
第二个解决方案:
在sql查询中包含原始的int列以及格式化的值&在原始int列和&中应用排序绑定gridview中的格式化列以供显示。
答案 1 :(得分:0)
一个解决方案可能是在mySQL中的查询中,您将同时拥有Data1
和Data2
的格式化版本和未格式化的版本,然后根据未格式化的版本对其进行排序,因此您的查询看起来像这样:
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