如何在 AspxGridView 中排列 FieldName?
How to arrange the FieldName in AspxGridView?
我想按照用户想要显示的方式排列字段名称。我没有使用 SqlDataSource。我正在通过如下编程调用存储过程。
string cs = ConfigurationManager.ConnectionStrings["HQMatajerConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spGetTotalSalesQuantity",con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@DateFrom", DateFromStr);
cmd.Parameters.AddWithValue("@DateTo", DateToStr);
//cmd.Parameters.AddWithValue("@DateFrom", "2015-01-01 00:00:00");
//cmd.Parameters.AddWithValue("@DateTo", "2015-12-31 23:59:59");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
ASPxGridView1.DataSource = ds;
ASPxGridView1.DataBind();
}
结果,我可以看到我在查询中如何给出 Column_name 的字段名称。但是,用户想要查看他们如何排列字段名称。
例如:
select
student_id,student_name ,Class,School_Name
From
Student_Details
如果上面一个是我的存储过程。我将按照我在查询中提到的方式获取字段名称。
但是用户想看看他们付出的结果。如果用户给出 School_Name,Class,Student_id,School_Name
。
在AspxGridView中有没有办法安排?
根据我对问题的理解和@mohamed 的评论检查我的答案。
尝试使用DataColumn.SetOrdinal方法。例如:
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
ds.Tables[0].Columns["School_Name"].SetOrdinal(0);
ds.Tables[0].Columns["Class"].SetOrdinal(1);
ds.Tables[0].Columns["Student_id"].SetOrdinal(2);
ds.Tables[0].Columns["School_Name"].SetOrdinal(3);
ASPxGridView1.DataSource = ds;
ASPxGridView1.DataBind();
即使用户更改 select 列的语句顺序也不会改变。
使用 hiddentext 字段并获取用户希望以何种顺序显示的列名称。
string selectedColumns = HiddentxtSelectedColumn.Value;
将selectedColumns
移动到数组
string[] names = selectedColumns.Split(',');
sda.Fill(ds);
for (int i = 0; i < names.Length; i++)
{
ds.Tables[0].Columns[names[i]].SetOrdinal(i);`
}
ASPxGridView1.DataSource = ds;
ASPxGridView1.DataBind();
现在它将 运行 完全正确。
我想按照用户想要显示的方式排列字段名称。我没有使用 SqlDataSource。我正在通过如下编程调用存储过程。
string cs = ConfigurationManager.ConnectionStrings["HQMatajerConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spGetTotalSalesQuantity",con);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@DateFrom", DateFromStr);
cmd.Parameters.AddWithValue("@DateTo", DateToStr);
//cmd.Parameters.AddWithValue("@DateFrom", "2015-01-01 00:00:00");
//cmd.Parameters.AddWithValue("@DateTo", "2015-12-31 23:59:59");
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
ASPxGridView1.DataSource = ds;
ASPxGridView1.DataBind();
}
结果,我可以看到我在查询中如何给出 Column_name 的字段名称。但是,用户想要查看他们如何排列字段名称。
例如:
select
student_id,student_name ,Class,School_Name
From
Student_Details
如果上面一个是我的存储过程。我将按照我在查询中提到的方式获取字段名称。
但是用户想看看他们付出的结果。如果用户给出 School_Name,Class,Student_id,School_Name
。
在AspxGridView中有没有办法安排?
根据我对问题的理解和@mohamed 的评论检查我的答案。
尝试使用DataColumn.SetOrdinal方法。例如:
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.Fill(ds);
ds.Tables[0].Columns["School_Name"].SetOrdinal(0);
ds.Tables[0].Columns["Class"].SetOrdinal(1);
ds.Tables[0].Columns["Student_id"].SetOrdinal(2);
ds.Tables[0].Columns["School_Name"].SetOrdinal(3);
ASPxGridView1.DataSource = ds;
ASPxGridView1.DataBind();
即使用户更改 select 列的语句顺序也不会改变。
使用 hiddentext 字段并获取用户希望以何种顺序显示的列名称。
string selectedColumns = HiddentxtSelectedColumn.Value;
将
selectedColumns
移动到数组string[] names = selectedColumns.Split(','); sda.Fill(ds); for (int i = 0; i < names.Length; i++) { ds.Tables[0].Columns[names[i]].SetOrdinal(i);` } ASPxGridView1.DataSource = ds; ASPxGridView1.DataBind();
现在它将 运行 完全正确。