WPF 绑定双向数据网格
WPF Binding TwoWay DataGrid
我正在制作简单的 wpf 项目,必须连接到数据库并将其绑定到 DataGrid。
问题是:我可以显示来自数据库的数据,但我无法将其更新回来。我一直在寻找答案,尝试了 100 种不同的东西,我不知道它会是什么。
我的 xaml 数据网格:
<Grid>
<DataGrid x:Name="dataGrid1" ItemsSource="{Binding Path=GridData, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Margin="0" VerticalAlignment="Stretch"/>
</Grid>
我的观点
class View
{
SqlConnection con;
DataTable dt = new DataTable("emp");
SqlDataAdapter da;
SqlCommandBuilder builder;
public DataView GridData
{
get
{
con = new SqlConnection(@"Server=MAXMAD-\R;Initial Catalog=WOC;Integrated Security=True");
try
{
con.Open();
string Get_Data = "SELECT * FROM Player";
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = Get_Data;
da = new SqlDataAdapter(cmd);
builder = new SqlCommandBuilder(da);
da.Fill(dt);
}
catch (SqlException ex)
{
MessageBox.Show("Error occured, can not connect to db!");
return null;
}
return dt.DefaultView;
}
set
{
da.Update(dt);
}
}
}
代码隐藏
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
View myView = new View();
DataContext = myView;
}
}
找到了,我不知道为什么,但是没有调用 set GridData,所以我添加了一个委托:
dt.RowChanged+= new DataRowChangeEventHandler(delegate(object sender, DataRowChangeEventArgs args) { da.Update(dt); });
我正在制作简单的 wpf 项目,必须连接到数据库并将其绑定到 DataGrid。 问题是:我可以显示来自数据库的数据,但我无法将其更新回来。我一直在寻找答案,尝试了 100 种不同的东西,我不知道它会是什么。
我的 xaml 数据网格:
<Grid>
<DataGrid x:Name="dataGrid1" ItemsSource="{Binding Path=GridData, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Margin="0" VerticalAlignment="Stretch"/>
</Grid>
我的观点
class View
{
SqlConnection con;
DataTable dt = new DataTable("emp");
SqlDataAdapter da;
SqlCommandBuilder builder;
public DataView GridData
{
get
{
con = new SqlConnection(@"Server=MAXMAD-\R;Initial Catalog=WOC;Integrated Security=True");
try
{
con.Open();
string Get_Data = "SELECT * FROM Player";
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = Get_Data;
da = new SqlDataAdapter(cmd);
builder = new SqlCommandBuilder(da);
da.Fill(dt);
}
catch (SqlException ex)
{
MessageBox.Show("Error occured, can not connect to db!");
return null;
}
return dt.DefaultView;
}
set
{
da.Update(dt);
}
}
}
代码隐藏
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
View myView = new View();
DataContext = myView;
}
}
找到了,我不知道为什么,但是没有调用 set GridData,所以我添加了一个委托:
dt.RowChanged+= new DataRowChangeEventHandler(delegate(object sender, DataRowChangeEventArgs args) { da.Update(dt); });