【问题标题】:WPF C# Datagrid update columns from SQL ServerWPF C# Datagrid 从 SQL Server 更新列
【发布时间】:2015-11-29 00:29:47
【问题描述】:

我想将数据从 SQL Management Studio 获取到数据网格,但它不起作用。 首先我有一个类:

我从哪里得到 firstName 和 secondName。

class Person
{
    public string firstName { get; set; }
    public string secondName { get; set; }

}

我已经创建了用于连接数据库、使用选择查询和刷新数据库的按钮。

        string dbConnectionString = @"Data Source=Username\SQLEXPRESS;Initial Catalog=TestDatabase;Integrated Security=True";
        SqlConnection con = new SqlConnection(dbConnectionString);
        con.Open();
        string sqllogin = "SELECT firstName,secondName FROM TestDatabase.[dbo].[Persons]";
        SqlCommand cmd = new SqlCommand(sqllogin, con);
        SqlDataReader reader = cmd.ExecuteReader();


        List<Person> personList;
        personList = new List<Person>();

        while (reader.Read())
        {
            Person p = new Person();
            p.firstName = reader.GetString(0);
            p.secondName = reader.GetString(1);
            personList.Add(p);
        }

        dataGrid.DataContext = personList;

XAML 看起来像这样:

<DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Path=firstName}" Header="Name" MinWidth="100"/>
            <DataGridTextColumn Binding="{Binding Path=secondtName}" Header="Second Name" MinWidth="100"/>
</DataGrid.Columns>

不幸的是,它没有用。知道如何解决这个问题吗?此时,当我单击按钮时,什么也没有发生。

问候。

【问题讨论】:

  • 因为 firstName 和 secondtName 不是 List 对象的属性

标签: c# sql-server wpf datagrid


【解决方案1】:

您可以尝试将您的 List 切换为 ObservableCollection 并更改它

dataGrid.DataContext = personList;

dataGrid.ItemSource = personList;

告诉我它是否有效,并且在您可以绑定Datagrid的itemsource以不创建新的ObservableCollection,并直接添加您的“Person”。

【讨论】:

  • 非常感谢,它工作。但是此时只有第一列(firstName)设置了数据,第二列是空的。
  • 因为xaml的绑定错误,你有:Path=secondtName}",应该是:Path=secondName}"
猜你喜欢
  • 1970-01-01
  • 2011-12-13
  • 2014-03-03
  • 2018-12-03
  • 2015-12-04
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多