我想像用户想要显示的那样排列字段名。我不使用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里有安排吗?
发布于 2017-01-04 08:26:30
string selectedColumns = HiddentxtSelectedColumn.Value;selectedColumns移动到数组
string[]名称= selectedColumns.Split(',');sda.Fill(ds);for (int I= 0;i< names.Length;i++) { ds.Tables.Columns[namesi].SetOrdinal(i);` } ASPxGridView1.DataSource = ds;ASPxGridView1.DataBind();现在它将完全运行。
发布于 2017-01-04 07:44:31
根据我对这个问题的理解和@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语句,列的顺序也不会改变。
https://stackoverflow.com/questions/41458295
复制相似问题