无法从DataGrid中删除行

时间:2014-11-23 18:43:39

标签: c# .net wpf datagridview datagrid

现在这可能是一个“Noob”问题。但我似乎无法做任何人们似乎对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(); 

此外,如果有更好的方法,请告诉我。我对这一切都很陌生。

2 个答案:

答案 0 :(得分:0)

每次从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模式&实体框架。

答案 1 :(得分:0)

这就是我最后要删除的按钮。大多数答案都试图回答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();
    }