2013-07-08 49 views
1

我要動態地創建一個類似於Excel表datagridview,但我希望有設置colspan一些列的選項。C#的DataGridView colspan屬性

這個想法只是顯示數據,用戶不會輸入任何內容,但它應該以表/電子表格的形式顯示。如果我不能有datagridviewcolspan是否有任何其他類型的表類工具,它有colspan

我另一方面將動態創建列從數據庫查詢結果。

我正在使用Windows窗體。

任何想法?

+0

沒有。我是.NET新手,我不知道有什麼選擇。 Datagridview對我的目的看起來不錯,但沒有colspan,這使我無法使用它。 –

+0

Telerik的radcontrols非常好 - 它們有一個gridview,它有很多選項 –

+0

是不是隻有ASP的radcontrol?我正在寫一個Windows窗體應用程序。 –

回答

3

你可以看看TableLayoutPanel Class,它有一個TableLayoutPanel.SetColumnSpan Method

下面是一個代碼示例,它跨越的文本框的一個2列:

var dt = new DataTable(); 
dt.Columns.Add("Id"); 
dt.Columns.Add("Value1"); 
dt.Columns.Add("Value2"); 

dt.Rows.Add(1, "aa", "xx"); 
dt.Rows.Add(2, "bb","yy"); 
dt.Rows.Add(3, "cc", "zz"); 
tableLayoutPanel1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single; 
tableLayoutPanel1.ColumnCount = 4; 
tableLayoutPanel1.AutoSize = true; 
for (int i = 0; i < dt.Columns.Count; i++) 
{ 
    var l = new Label(); 
    l.Dock = DockStyle.Fill; 
    l.Text = dt.Columns[i].ColumnName; 
    tableLayoutPanel1.Controls.Add(l, i, 0); 
} 
var emptyLabel = new Label(); 
emptyLabel.Text = "Empty label"; 
tableLayoutPanel1.Controls.Add(emptyLabel, 4, 0); 
for (int i = 0; i < dt.Rows.Count; i++) 
{ 
    for (int j = 0; j < dt.Rows[i].ItemArray.Length; j++) 
    { 
     var tb = new TextBox(); 
     tb.Multiline = true; 
     tb.Dock = DockStyle.Fill; 
     tb.Text = dt.Rows[i][j].ToString(); 
     tableLayoutPanel1.Controls.Add(tb, j, i+1); 
     if (i == 1 && j == 2) 
      tableLayoutPanel1.SetColumnSpan(tb, 2); 
    } 
} 
+0

這就是我正在想的。但在我看來,如果我有很多列和行來填充它,渲染真的很慢。 :/ –

+0

這只是一個解決方法,它不能代替DataGridView的作用。 –