2012-03-02 12 views
0

私はRadGridにバインドするオブジェクトデータソースを持っています。しかし、下向きに成長するのではなく、右に拡大したい。 EXのために
、一般的なグリッドは、トップとその下のデータにヘッダをしています。その代わり、私は左側と右側の値の列のヘッダーをしたいTelerik RadGridはオブジェクトごとに行ではなくデータ列を追加します

Column A Column B Column C 
Value A 1   9   
Value B 3   7 
Value C 15   17   

Column A Value A Value B Value C 
Column B 1   9   15 
Column C 3   7   17 

どのように達成するには?

答えて

3

.aspxの

<telerik:RadGrid ID="RadGrid1" Width="95%" runat="server" OnItemCreated="RadGrid1_ItemCreated" 
     OnNeedDataSource="RadGrid1_NeedDataSource1"> 
     <PagerStyle Mode="NextPrevAndNumeric" /> 
    </telerik:RadGrid> 

.aspx.cs

public DataTable GetDataTable(string query) 
    { 
     String ConnString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString; 
     SqlConnection conn = new SqlConnection(ConnString); 
     SqlDataAdapter adapter = new SqlDataAdapter(); 
     adapter.SelectCommand = new SqlCommand(query, conn); 

     DataTable myDataTable = new DataTable(); 

     conn.Open(); 
     try 
     { 
      adapter.Fill(myDataTable); 
     } 
     finally 
     { 
      conn.Close(); 
     } 

     return myDataTable; 
    } 


    public DataTable PivotTable(DataTable source) 
    { 
     DataTable dest = new DataTable("Pivoted" + source.TableName); 

     dest.Columns.Add(" "); 

     foreach (DataRow r in source.Rows) 
      dest.Columns.Add(r[0].ToString()); 

     for (int i = 0; i < source.Columns.Count - 1; i++) 
     { 
      dest.Rows.Add(dest.NewRow()); 
     } 

     for (int r = 0; r < dest.Rows.Count; r++) 
     { 
      for (int c = 0; c < dest.Columns.Count; c++) 
      { 
       if (c == 0) 
        dest.Rows[r][0] = source.Columns[r + 1].ColumnName; 
       else 
        dest.Rows[r][c] = source.Rows[c - 1][r + 1]; 
      } 
     } 
     dest.AcceptChanges(); 
     return dest; 
    } 

    protected void RadGrid1_NeedDataSource1(object source, GridNeedDataSourceEventArgs e) 
    { 
     RadGrid1.DataSource = PivotTable(GetDataTable("SELECT TOP 5 CustomerID, CompanyName, ContactName, ContactTitle, Address, PostalCode, City, Country FROM Customers")); 
    } 
    protected void RadGrid1_ItemCreated(object sender, GridItemEventArgs e) 
    { 
     if (e.Item is GridDataItem) 
     { 
      (e.Item as GridDataItem)[(RadGrid1.MasterTableView.AutoGeneratedColumns[0] as GridBoundColumn).UniqueName].Font.Bold = true; 
      (e.Item as GridDataItem)[(RadGrid1.MasterTableView.AutoGeneratedColumns[0] as GridBoundColumn).UniqueName].BackColor = System.Drawing.SystemColors.Control; 
      (e.Item as GridDataItem)[(RadGrid1.MasterTableView.AutoGeneratedColumns[0] as GridBoundColumn).UniqueName].BorderColor = System.Drawing.Color.White; 
     } 
    } 
+0

グレート答えJayesh ...おかげでたくさん。 –

+0

ありがとう、それは私の時間を節約している.. – Srinivas

関連する問題