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

hssg44 hssg44 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
本人刚学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();
}
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
hssg44
LINQ 8,492 成员 4,736 内容