簡體   English   中英

如何在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();
}

結果,我可以在查詢中看到字段名稱的輸入方式。 但是,用戶希望查看字段名稱的排列方式。

例如:

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語句的列順序也不會改變。

  1. 使用hiddentext字段並獲得列名稱,因為用戶希望以該順序顯示。

    string selectedColumns = HiddentxtSelectedColumn.Value;

  2. 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(); 

現在它將完全運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM