我将尝试在这里解释我的问题...
我使用 2 种表格。第一个具有下拉菜单和在下拉菜单中选择项目后填充的网格控件。填充gridControl后,我有一个按钮来添加新的数据行。当我单击它时,将打开新表单,其中包含要填充的文本字段,并保存按钮以保存更改并刷新 gridControl。这是第一个表单的代码,其中在下拉菜单中选择项目后填充了 gridControl:
private void ddScoreType_EditValueChanged(object sender, EventArgs e)
{
ddScoreTypeSelectedID = Convert.ToInt32((sender as LookUpEdit).EditValue);
try
{
gcScoreParam.DataSource = null;
gvScoreParam.Columns.Clear();
selectedScoreType = _db.ScoreTypes.Where(x => x.ID == ddScoreTypeSelectedID).SingleOrDefault();
gcScoreParam.DataSource = selectedScoreType.ScoreParams.ToList();
gvScoreParam.Columns.AddVisible("Name", "Name");
gvScoreParam.Columns.AddVisible("Code", "Code");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这很好......这是我的第二个输入表单中的代码,我应该在第一个表单中添加新数据并刷新 gridControl:
private void btnSave_Click(object sender, EventArgs e)
{
//XtraMessageBox.Show("ID - " + _ScoresTypeID);
db = new BetEntities();
ScoreParam param = new ScoreParam();
db.ScoreParams.Add(param);
param.ScoreTypeID = _ScoresTypeID;
param.Name = txtScoreName.Text;
param.Code = txtScoreCode.Text.ToUpper();
db.SaveChanges();
frmScoreType frmST = new frmScoreType();
frmST.RefreshGVParams(db);
this.Close();
}
db 是我的数据库,ScoreParam 是表。这是方法 RefreshGVParams:
public void RefreshGVParams(BetEntities be)
{
//gvScoreParam.BeginDataUpdate();
gcScoreParam.BeginUpdate();
try
{
gcScoreParam.DataSource = null; // this line DOES NOT set datasource to null
selectedScoreType = be.ScoreTypes.Where(x => x.ID == ddScoreTypeSelectedID).SingleOrDefault();
gcScoreParam.DataSource = selectedScoreType.ScoreParams.ToList();
gvScoreParam.Columns.Clear();
gvScoreParam.Columns.AddVisible("Name", "Name");
gvScoreParam.Columns.AddVisible("Code", "Code");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
gcScoreParam.EndUpdate();
//gvScoreParam.EndDataUpdate();
}
}
我评论了没有将dataSource设置为null的行,并且gridcontrol没有用新数据刷新......当我关闭我的第一个表单并重新启动它时,我看到它用新数据刷新......
单击第二种形式的“保存”按钮后,如何刷新第一种形式的 gridControl?我在哪里犯了错误?
很抱歉发了很长的帖子,但是自从我无法解决这个问题以来已经有 2 天了......我希望我解释得很好:)