无法弄清楚为什么我的数据网格在填充绑定的数据表时没有填充。我已经检查了其他Stackoverflow帖子,但似乎没有什么能解决我的问题。我知道我的数据表被填满了,因为行计数超过 50。填充数据表(返回运算符(的方法被成功调用(这是在列表框中的选定项被更改时(
这是我的代码:
Xaml:
<DataGrid x:Name="dgOperators"
ItemsSource="{Binding DtOperators}"
AutoGenerateColumns="True"
Background="#0d0d0d"
Foreground="White"
Margin="10"
Grid.Row="1"
IsReadOnly="True" />
MainWindow.xaml.cs:
私有视图模型虚拟机;
public MainWindow()
{
InitializeComponent();
vm = new ViewModel();
this.DataContext = vm;
}
视图模型:
private DataTable dtOperators;
public DataTable DtOperators
{
get { return dtOperators; }
set
{
dtOperators = value;
OnPropertyChanged("DtOperators");
}
}
public void ReturnOperators()
{
string query = "My SQL Query Here";
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, con))
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
DtOperators.Clear();
adapter.Fill(DtOperators);
}
}
将属性值传递给类似
adapter.Fill(DtOperators)
显然不会为属性分配新值。因此,未触发 DtOperators 设置器。
我将我的 ReturnOperator(( 修改为以下内容。通过填充另一个数据表,然后将 DtOperators 设置为该数据表,它起作用了。
public void ReturnOperators()
{
string query = @"SELECT TOP 1000 [Store],[opid],[last4],[repeatserve_Count] FROM [POS].[dbo].[LVRC_Summary] WHERE repeatserve_count > 5";
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, con))
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
DtOperators.Clear();
DataTable dt = new DataTable();
adapter.Fill(dt);
DtOperators = dt;
}
}