【问题标题】:Unable to delete rows from DataGrid无法从 DataGrid 中删除行
【发布时间】:2015-01-21 10:55:18
【问题描述】:

现在这可能是一个“菜鸟”问题。但我似乎无法执行人们似乎对 DataGrid 执行的任何命令。有什么区别,为什么我只能得到 DataGrid?

我的问题是当从数据库中提取数据网格中的行时,我试图删除它们。但是,我不知道是怎么回事,因为 SelectRows 命令不起作用。

这就是我目前所拥有的。无论如何我可以获得DataGrid吗?

编辑: 这就是我将信息输入数据网格的方式。

private void Button_Click(object sender, RoutedEventArgs e)
{
    foreach (DataGridViewRow row in userDataGrid.SelectedRows)
    {
        if (!row.IsNewRow)
            dataGridView1.Rows.Remove(row);
    }
} 




SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Server=----; Database=----; User id=vsd; password=----";
conn.Open();

dt = new DataTable();
sda = new SqlDataAdapter("SELECT TeacherID, ClassName, ClassID FROM CLASS", conn);
sda.Fill(dt);
userDataGrid.ItemsSource = dt.DefaultView;
conn.Close(); 

另外,如果有更好的方法可以做到这一点,也请告诉我。我对这一切都很陌生。

【问题讨论】:

  • 如何填充 DataGrid 的项目?绑定?
  • @Bizz 我已将问题更新为如何将信息放入数据网格中。
  • 我已经很久没有把数据表放在一边了。使用实体框架要容易得多。并且为了有效地使用 wpf 使用 MVVM 模式

标签: c# .net wpf datagridview datagrid


【解决方案1】:

每次从 db 中提取行时,都使用相同的 DataTable 实例。

DataTable mDataTable = new DataTable(); //class field

public Constructor()
{
    InitializeComponent();

    userDataGrid.ItemsSource = mDataTable .mDataTable;
}    

void PullData()
{
    mDataTable.Clear();

    using (SqlConnection conn = new SqlConnection(ConnectionString))
    {
        conn.Open();
        sda = new SqlDataAdapter("SELECT TeacherID, ClassName, ClassID FROM CLASS", conn);
        sda.Fill(mDataTable );
    }
}

它应该可以解决您的问题,但这是一种不好的方法。 正如 Bizz 建议的那样,看看 MVVM 模式和实体框架。

【讨论】:

    【解决方案2】:

    这就是我最终为删除按钮所做的事情。大多数答案都试图回答 DataGridView。但是,这不是 WinForms 或 DataGridView。这是 WPF,它只是 DataGrid。

    这就是我从网格和数据库中删除行的操作。

    private void delete_Click(object sender, RoutedEventArgs e)
        {
            DataGrid dg = this.aSSIGNMENTDataGrid;
    
            var id1 = (DataRowView)dg.SelectedItem;  //Get specific ID From                DataGrid after click on Delete Button.
    
            PK_ID = Convert.ToInt32(id1.Row["AssignmentID"].ToString());
    
            SqlConnection conn = new SqlConnection(sqlstring);
            conn.Open();
    
            string sqlquery = "delete from ASSIGNMENT where AssignmentID='" + PK_ID + "' ";
            SqlCommand cmd = new SqlCommand(sqlquery, conn);
            cmd.ExecuteNonQuery();
            filldatagrid();
        }
    
        private void filldatagrid()
        {
            SqlConnection conn = new SqlConnection(sqlstring);
            conn.Open();
    
            string sqlquery = "select * from ASSIGNMENT";
            SqlCommand cmd = new SqlCommand(sqlquery, conn);
            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            adp.Fill(dt);
            aSSIGNMENTDataGrid.ItemsSource = dt.DefaultView;
            conn.Close();
        }
    

    【讨论】:

      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 2016-08-20
      • 2012-07-24
      • 1970-01-01
      相关资源
      最近更新 更多