3

我想对我的整数数据进行排序,但我想让它更容易阅读,如果我有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 |
+================+=================+

我该如何解决?

4

2 回答 2

1

第一个解决方案

在 C# 代码中进行格式化。

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

第二种解决方案

在 sql 查询中包含原始 int 列以及格式化值并对原始 int 列应用排序并在 gridview 中绑定格式化列以进行显示。

于 2013-06-01T07:19:26.337 回答
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(格式化版本)中对其进行排序,但如果到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”(for Data1)或“B”(for Data2),例如:

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

然后从用户的眼睛中隐藏排序器列,但一定要在分配给它之后放置它,DataSource否则DataGridView你一开始就没有可说的列。

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
于 2013-06-01T09:59:57.453 回答