[WinForm]使用linq修改数据后无法刷新数据列表.
本人刚学linq,遇到一个问题不知道如何解决.
简单的描述如下:
窗口A是绑定数据列表到datagrid,在A上有一个修改按键,选中一列后点击打开新的窗口B,在窗口B中读出了该选中列的值,然后进行修改,修改成功后退出窗口B.问题来了,退出窗口B后,窗口A中数据列表并没有刷新.而且我在窗口A中有写查询事件,点查询后也不能刷新数据.但是如果是增加和删除操作数据却能够刷新.不知道这是怎么一回事.望高人解答,谢谢.
窗口A部分代码:
窗口B的代码:
简单的描述如下:
窗口A是绑定数据列表到datagrid,在A上有一个修改按键,选中一列后点击打开新的窗口B,在窗口B中读出了该选中列的值,然后进行修改,修改成功后退出窗口B.问题来了,退出窗口B后,窗口A中数据列表并没有刷新.而且我在窗口A中有写查询事件,点查询后也不能刷新数据.但是如果是增加和删除操作数据却能够刷新.不知道这是怎么一回事.望高人解答,谢谢.
窗口A部分代码:
private ypDataContext db = new ypDataContext();
private void frmMaterial_Load(object sender, EventArgs e)
{
ViewBinding();
}
private void btnSearch_Click(object sender, EventArgs e)
{
ViewBinding();
}
private void ViewBinding()
{
gvMaterial.Refresh();
Expression<Func<T_material, bool>> expr = n => GetCondition(n);
var xQuery = db.T_material.Where<T_material>(expr.Compile());
gvMaterial.DataSource = xQuery.ToList<T_material>();
}
private bool GetCondition(T_material tb)
{
bool boolResult = true;
if (txtName.Text.Trim() != string.Empty)
{
boolResult &= tb.mname.Contains(txtName.Text.Trim());
}
if (txtPrice1.Text.Trim() != string.Empty)
{
boolResult &= tb.mprice >= decimal.Parse(txtPrice1.Text.Trim());
}
if (txtPrice2.Text.Trim() != string.Empty)
{
boolResult &= tb.mprice <= decimal.Parse(txtPrice2.Text.Trim());
}
return boolResult;
}
private void btnAlter_Click(object sender, EventArgs e)
{
frmMAlter alter = new frmMAlter();
alter.id = int.Parse(gvMaterial.Rows[gvMaterial.SelectedCells[0].RowIndex].Cells[0].Value.ToString());
alter.ShowDialog();
}
private void btnDel_Click(object sender, EventArgs e)
{
DialogResult dr = MessageBox.Show("是否删除这条记录?","警告",MessageBoxButtons.YesNo,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1);
if (dr == DialogResult.Yes)
{
int id = int.Parse(gvMaterial.Rows[gvMaterial.SelectedCells[0].RowIndex].Cells[0].Value.ToString());
T_material mat = db.T_material.Single(m => m.mid == id);
db.T_material.DeleteOnSubmit(mat);
db.SubmitChanges();
MessageBox.Show("删除成功!");
ViewBinding();
}
}
窗口B的代码:
public int id;
public frmMAlter()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
ypDataContext db = new ypDataContext();
T_material mat = db.T_material.Single(m => m.mid == id);
mat.mname = txtName.Text.Trim();
mat.mprice = decimal.Parse(txtPrice.Text.Trim());
db.SubmitChanges();
MessageBox.Show("修改成功!");
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void frmMAlter_Load(object sender, EventArgs e)
{
ypDataContext db = new ypDataContext();
T_material mat = db.T_material.Single(m => m.mid == id);
txtName.Text = mat.mname;
txtPrice.Text = mat.mprice.ToString();
}
...全文
相关推荐
winform使用linq实现datagridview分页功能
vs2015实现功能,读取本地json文件用来当作数据源。使用linq语法分页查询显示。 有兴趣的可以拿去参考。 dgv.DataSource = groups.Skip(pageIndex).Take(pageSize).ToList();
C#中的LINQ toSQL
LINQ to SQL 基于ADO.NET 将数据表和行映射成类对象。 LINQ to SQL从.net 自定义属性或xml文档中获取映射信息。这些信息用于自动将对象持久保存至关系型数据库中。 数据表可以map成一个类,数据表中的列将被map类中的属性,表与表之间的关系将以额外的属性表示。 LINQ to sql 能够自动跟踪对象的修改。并通过动态生成的SQL语句进行更新数据库。 数据库如下:...
WCF实现Linq+Winform架构数据库开发Demo
实体层采用linq to sql,客户端winform实现增删查功能,服务端用WCF框架,适用于WCF学习数据库开发。 有问题可以留言 http://blog.csdn.net/quan278905570
EF+winform+程序中修改配置连接 附带数据库
EF应用,WINFORM操作,lanmada表达式应用
C#使用linq计算执行元素在列表中出现次数的方法
主要介绍了C#使用linq计算执行元素在列表中出现次数的方法,涉及C#使用linq扩展进行列表查询的技巧,需要的朋友可以参考下


LINQ
