У меня есть требование, когда я должен показать древовидное представление со списком таблиц, и если пользователь выбирает какую-либо таблицу, тогда она должна отображать сетку со списком столбцов, а строки должны иметь столбцы DataGridCheckboxColumns, и пользователь может редактировать столбцы флажков.
В настоящее время я сталкиваюсь с техническими проблемами при выполнении этого.
Я могу создавать столбцы, но строки не отображаются, и более того, при изменении выбора древовидного представления, хотя у меня обновлена таблица данных, но если я назначаю сетку, это не отражается в пользовательском интерфейсе. Пожалуйста, помогите мне в этом, это действительно чрезвычайное требование.
Заранее спасибо. Пожалуйста, найдите фрагмент кода ниже.
//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 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}">