如何通过上下文菜单ContextMenu(右键菜单)实现删除行的操作,问题详细内容为:我已经在DataGrid中添加了上下文菜单:以下是标记,DataGrid所绑定的数据在一个名叫m_Records的链表中。该对象的类型包含Time和Record属性:<DataGridName="dataGrid"><DataGrid.Conte...我已经在DataGrid中添加了上下文菜单:
以下是标记,DataGrid所绑定的数据在一个名叫m_Records的链表中。该对象的类型包含Time和Record属性:
<DataGrid Name="dataGrid">
<DataGrid.ContextMenu>
<ContextMenu>
<MenuItem Header="删除" Click="MenuItem_Click"></MenuItem>
</ContextMenu>
</DataGrid.ContextMenu>
<DataGrid.columns>
<DataGridTextColumn Header="时间" Binding={"Binding Path=Time"}></DataGridTextColumn >
<DataGridTextColumn Header="内容" Binding={"Binding Path=Record"}></DataGridTextColumn >
</DataGrid.columns>
</DataGrid>
以下是事件处理程序:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{}
请问要怎么样才能实现,单击菜单的删除项后,就把鼠标下方的项从dataGrid中删除?
选中一行后,在grid右键也会出菜单,这样有违常理。
不会通过row的事件或方法进行删除。
这是我写的,但是删除失败,不知道为什么??
private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
string strconn = "server=.;database=diancaixitong;integrated security=true";
SqlConnection sqlconn = new SqlConnection(strconn);
sqlconn.Open();
//隐形转换为datagridview 定义为某行
DataRowView a = (DataRowView)Datagrid.SelectedItem;
//定义到单元格
string id = a.Row[0].ToString();
//textbox内容等于点击事件
if (MessageBox.Show("是否确定删除?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Information) == MessageBoxResult.OK)
{
string sqladd = string.Format("delete from DishMenu where Dish_No='{0}'", id);
SqlCommand sqlcmd = new SqlCommand(sqladd, sqlconn);
sqlcmd.ExecuteNonQuery();
if (sqlcmd.ExecuteNonQuery() > 0)
{
MessageBox.Show("删除成功!", "提示", MessageBoxButton.OK);
string str = "select * from DishMenu";
SqlDataAdapter sqlstr = new SqlDataAdapter(str, sqlconn);
DataSet ds = new DataSet();
sqlstr.Fill(ds, "table1");
Datagrid.DataContext = ds;
}
else
{
MessageBox.Show("删除失败!","提示",MessageBoxButton.OK);
}
}