我正在用来自数据库的信息填充我的DataGrid。该信息看起来很好。我想将所有内容保留为少于一列。我不希望该列标题是可编辑的。只有它下面的行。例如,根据下面的图片,我希望能够编辑“参加者”列的内容5、5、5和3。
我看不到任何能够单独选择要设置为只读的行或列的选项。我只看到一个将整个DataGrid设置为只读的选项。我试图遍历,并尝试将只读设置为所需的列,但是不能。请指教。谢谢。
看到了一些示例,在这些示例中,您可以分别通过XAML声明哪一列是只读的,但是这些是手动输入的预定数据。我正在尝试使用“自动生成的列”填充DataGrid,并且数据来自数据库,我想以编程方式进行操作。
Connection connection = new Connection();
public static DataTable dt = new DataTable();
private void FillTable(DataGrid dataGrid)
{
//Connecting to database
connection.ConnectToDB(table, dt);
dataGrid.ItemsSource = dt.DefaultView;
foreach (DataGridColumn column in dataGrid1.Columns)
{
if (column.DisplayIndex == 1)
{
dataGrid1.IsReadOnly = true;
}
}
//dataGrid1.IsReadOnly = true;
}
XAML:
<DataGrid x:Name="dataGrid1" Canvas.Left="10" Canvas.Top="10" Height="auto" Width="auto" MaxHeight="400" AutoGenerateColumns="True" Style="{DynamicResource DataGridStyle1}"/>
如果自动生成列,则处理DataGrid.AutoGeneratingColumn
。
private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName != "Participants")
{ e.Column.IsReadOnly = true; }
}
并更改FillTable
方法:
private void FillTable(DataGrid dataGrid)
{
connection.ConnectToDB(table, dt);
dataGrid.ItemsSource = dt.DefaultView;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句