我會盡力在這裏解釋我的問題...刷新數據源和更新GridControl
我使用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();
}
}
我評論說,不設置數據源爲空就行了,gridcontrol沒有新的數據刷新... 當我結束我的第一種形式,並再次啓動它,然後我看到它與新的數據更新......
我怎麼能刷新gridControl在第一種形式單擊第二種形式SAVE按鈕後?我做錯了什麼?
對不起,長的帖子,但它過2次天了......我希望我解釋好:)
號。 。這並沒有解決這個問題: - / – Mlad3n