[英]C# WPF DataGrid I can't edit cells (isReadyOnly false)
我有這個數據網格:
<DataGrid x:Name="grid1" HorizontalAlignment="Left" Height="349" Margin="10,38,0,0" VerticalAlignment="Top" Width="772" IsReadOnly="False" IsManipulationEnabled="True" SelectionMode="Single">
</DataGrid>
我從 Access 數據庫文件中加載數據:
ole = new OleDbConnection();
ole.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ervin\source\repos\FeriCrm\FeriCrm\bin\Debug\data.accdb;Persist Security Info=False";
ole.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = "select * from [partner]";
cmd.Connection = ole;
OleDbDataReader rd = cmd.ExecuteReader();
grid1.ItemsSource = rd;
我可以正確查看數據庫行和列,但無法編輯單元格。 我嘗試手動設置 grid1.isReadOnly=false 甚至 grid1.Columns[0].isReadOnly=false。 沒有任何幫助。 如何啟用單元格編輯?
由於 OleDbDataReader 僅傳遞數據行而不保存任何要更新的數據字段,因此生成的列將 IsReadOnly 設置為 True。 您需要將數據讀入某種合作伙伴 class 的 ObservableCollection 中,並為每個字段提供屬性。 然后將 grid1.ItemsSource 綁定到 ObservableCollection。
在您的情況下,另一個更簡單的版本是使用 DataTable:
OleDbDataReader rd = cmd.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(rd);
grid1.ItemsSource = dataTable.AsDataView();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.