2017-01-04 6 views
0

Я хочу упорядочить имена полей, которые пользователь хочет отобразить. Я не использую SqlDataSource. Я вызываю хранимую процедуру, программируя, как показано ниже.Как упорядочить имя поля в AspxGridView?

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?

+0

http://stackoverflow.com/questions/771688/how-can-i-arrange-columns-in-asp-net-gridview –

+0

@NagarajS Вопрос верен на этой странице. Но мое ожидаемое ожидание - это не то. Я не хочу менять свой оператор select sql, и я не хочу создавать столбец. Поскольку пользователь может давать разные типы операторов select в разное время –

+0

, вы просто хотите изменить текст заголовка или изменить порядок столбцов? Должно ли переупорядочение быть динамическим? – shreesha

ответ

0
  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(); 
    

Теперь он будет работать точно.

1

Отметьте мой ответ Основываясь на моем понимании вопроса и комментариях @ 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(); 

, даже если пользователь изменяет порядок выписки столбцов, не изменится.

+0

Я использую DataSet, а не DataTable. Возможно ли это с помощью DataSet, как указано выше? –

+0

Позвольте мне проверить, спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^