2017-01-04 1 views
0

사용자가 표시하려고 할 때 필드 이름을 정렬하려고합니다. SqlDataSource를 사용하고 있지 않습니다. 아래처럼 프로그래밍하여 저장 프로 시저를 호출합니다.AspxGridView에서 FieldName을 정렬하는 방법?

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에서 정렬 할 수 있습니까?

+0

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

+0

@NagarajS 질문은 해당 페이지에서 올 바릅니다. 그러나 내 기대치는 그만한 것이 아닙니다. 내 SQL SELECT 문을 변경하고 싶지 않아 난 열을 만들고 싶지 않아. 사용자가 다른 시간에 다른 유형의 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(); 

사용자가 select 문을 변경하더라도 열의 순서는 변경되지 않습니다.

+0

DataTable이 아닌 DataSet을 사용하고 있습니다. 위와 같이 DataSet을 사용할 수 있습니까? –

+0

감사합니다. 감사합니다. –

관련 문제