2013-02-24 41 views
0

我有要求在哪裏必須顯示帶有列表的樹視圖,如果用戶選擇任何表,那麼它應該顯示帶有列列表的網格&行應該有一個DataGridCheckboxColumns,並且用戶可以編輯checkboxcolumns。帶動態列和行的DataGrid

目前,我正面臨着技術挑戰。

我能夠創建列,但行沒有得到顯示,更多的更改樹視圖選擇雖然我已更新數據表,但如果我分配給網格它不反映在用戶界面。請幫助我解決這個緊急問題。

在此先感謝。請找到下面的代碼片段。

enter image description here

//DataGrid Add Columns and Rows 
private void DataGridInitialize(string tableName) 
{ 
    DataSet ds = selectionViewBAL.GetColumnNames(tableName); 
    DataSet dataset = new DataSet(); 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("Functions"); 
    dt.Columns.Add("AllColumns"); 

    foreach (var row in ds.Tables[0].Rows) 
    { 
     string rowname = ((System.Data.DataRow)(row)).ItemArray[0].ToString(); 
     dt.Columns.Add(rowname); 
    } 

    int i = 0; 
    foreach (DataColumn col in dt.Columns) 
    { 
     if (i == 0) 
     { 
      dataGrid1.Columns.Add(
       new DataGridTextColumn 
       { 
        Header = "Functions", 
        Binding = new Binding(string.Format("[{0}]", "Functions")) 
       }); 
     } 
     else 
     { 
      dataGrid1.Columns.Add(
       new DataGridCheckBoxColumn 
       { 
        Header = col.ColumnName, 
        Binding = new Binding(string.Format("[{0}]", col.ColumnName)) 
       }); 
     } 
     i++; 
    } 

    DataSet fetchFunctionNames = new DataSet(); 
    fetchFunctionNames = selectionViewBAL.GetListOfFunctions(); //FetchFunctions(); 

    DataRow dr = dt.NewRow(); 

    var itemsArray = new object[dataGrid1.Columns.Count]; 
    for (int j = 0; j < fetchFunctionNames.Tables[0].Rows.Count; j++) 
    { 
     itemsArray[0] = fetchFunctionNames.Tables[0].Rows[j].ItemArray[1]; 
     for (i = 1; i < itemsArray.Length; i++) 
     { 
      itemsArray[i] = true; 
     } 

     dr.ItemArray = itemsArray; 

     dt.Rows.Add(dr); 
     dr = dt.NewRow(); 
    } 

    dataGrid1.DataContext = dt; 
} 

我能看到的一切DT,但我不能給同樣以DataGrid和我雖然不能編輯。

<DataGrid Grid.Row="0" Grid.ColumnSpan="4" Grid.Column="1" 
      HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" 
      HorizontalAlignment="Left" VerticalAlignment="Top" Margin="7,9,0,0" 
      Name="dataGrid1" ItemsSource="{Binding}"> 
+0

我知道問題主要在於綁定,請幫助我,這個輸出看起來像附加的圖像,但幫助我正確地綁定它。 – user1095239 2013-02-24 18:55:29

回答

0

綁定到DataTable.DefaultView Property

dataGrid1.ItemsSource = dt.DefaultView; 

請看這WPF Snippet Tutorial - Binding a DataTable to a DataGrid了。

+0

感謝您的回覆,但一些如何在我的情況下沒有奏效。我創建了具有一組列的datagrid並將數據表分配給datagrid,它在第一組中顯示了兩組列和值,顯示了checkboxcolumn,第二組顯示了bool值(True/False)作爲文本。如果我在樹中選擇不同的表名,它會在Datatable中更新,我可以在調試模式下看到更新的列名,但在UI上它會顯示第一組值。我應該如何繼續下去 – user1095239 2013-02-25 05:17:44