亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WPF DataGrid 中的數據綁定未顯示在窗體上

WPF DataGrid 中的數據綁定未顯示在窗體上

C#
慕容森 2022-12-24 10:43:32
數據庫中的數據顯示在表單上。怎么了?我制作存儲庫、表格和一些方法。我使用 SQLite 并希望以簡單查詢的形式顯示結果,例如 SELECT id,Name FROM Students 我將按鈕放在帶有代碼的表單上private void Button_Click(object sender, RoutedEventArgs e)        {            var repo = new StudentsRepository();            var res = repo.GetAll();            DataTable dt = new DataTable("students");            DataGrid1.ItemsSource = dt.DefaultView;        }表單有 DataGrid 和 2 列,但我不明白為什么表單不顯示結果<Grid>        <DataGrid x:Name="DataGrid1" AutoGenerateColumns="true"  HorizontalAlignment="Left" Height="352" Margin="10,10,0,0" VerticalAlignment="Top" Width="758" SelectionChanged="DataGrid_SelectionChanged">        <DataGrid.Columns>            <DataGridTextColumn Binding="{Binding id}" Width="100" Header="Id"/>            <DataGridTextColumn Binding="{Binding Name}" Width="100" Header="Name"/>        </DataGrid.Columns>        </DataGrid>        <Button x:Name="ShowDataButton" Content="Show_Data" HorizontalAlignment="Left" Height="31" Margin="64,367,0,0" VerticalAlignment="Top" Width="161" Click="Button_Click"/>    </Grid>public class StudentsRepository: IRepository<StudentEntity>    {        private string GET_ALL_QUERY = "SELECT id, Name FROM Students";        private SqliteContext DbContext { get; }        public StudentsRepository()        {            DbContext = new SqliteContext();        }        public async Task<IList<StudentEntity>> GetAll()        {            var dataTable = new DataTable("Students");            using (var conn = await DbContext.GetConnection())            {                var da = new SQLiteDataAdapter(GET_ALL_QUERY, conn);                da.Fill(dataTable);                conn.Close();            }            var studList = new List<StudentEntity>();            foreach (DataRow row in dataTable.Rows)            {                studList.Add(new StudentEntity(row));            }            return studList;        }    }
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

這個怎么樣:


public async Task<DataTable> GetDataTable()

{

    var dataTable = new DataTable("Students");

    using (var conn = await DbContext.GetConnection())

    {

        var da = new SQLiteDataAdapter(GET_ALL_QUERY, conn);

        da.Fill(dataTable);

        conn.Close();

    }

    return dataTable;

}


private void Button_Click(object sender, RoutedEventArgs e)

{

    var repo = new StudentsRepository();

    var res = repo.GetDataTable();

    DataGrid1.ItemsSource = res.Result.AsDataView();

}

希望這有幫助~


更新:抱歉,函數返回類型是任務,因此它不是實際數據,這樣做:res.Result.AsDataView();


查看完整回答
反對 回復 2022-12-24
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

在您的 DataGrid 集上:

    AutoGenerateColumns="False"

然后改變:

DataGrid1.ItemsSource = dt.DefaultView

到:

DataGrid1.DataContext = dt.DefaultView

在 WPF 中,將綁定與您定義的列一起使用需要您設置 DataContext 而不是 ItemSource。就我個人而言,在從數據庫中提取數據并在 DataGrid 中顯示數據時,我一直使用 .ToList(),因此我無法就 DataTable 對您的其余代碼發表評論。


查看完整回答
反對 回復 2022-12-24
  • 2 回答
  • 0 關注
  • 487 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號