[WinForm]使用linq修改数据后无法刷新数据列表.

hssg44 2010-06-22 04:45:34
本人刚学linq,遇到一个问题不知道如何解决.
简单的描述如下:
窗口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();
}
...全文
221 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-07-03
  • 打赏
  • 举报
回复
解决就好
ysx_001 2010-07-03
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
水哥阿乐 2010-07-03
  • 打赏
  • 举报
回复
恭喜接分
hssg44 2010-06-22
  • 打赏
  • 举报
回复
自己解决了.

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();
db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, db.T_material);
ViewBinding();
}

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧