现在这可能是一个“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();
此外,如果有更好的方法,请告诉我。我对这一切都很陌生。
答案 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();
}