1

我正在制作简单的 wpf 项目,必须连接到 DB 并将其绑定到 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;
        }

    }
4

1 回答 1

1

找到了,我不知道为什么,但是设置的 GridData 没有被调用,所以我添加了一个委托:

dt.RowChanged+= new DataRowChangeEventHandler(delegate(object sender, DataRowChangeEventArgs args) { da.Update(dt); });
于 2015-11-26T23:02:28.550 回答