我应该如何使用UltraDropDown中的选定值更新UltraGrid中的单元格?

时间:2012-10-18 13:42:42

标签: ultragrid

我正在使用适用于Windows窗体的Infragistics Components 11.1版。

我有一个Office Office,每个大学都有OfficeTaxes OfficeTaxes表{ID,OfficeID,UniversityID,Tax} 大学表{ID,Name,...}

我有一个绑定到OfficeTaxes列表的网格,我正在尝试将UltraDropDown添加到University列。我在表单加载事件

中初始化列
private void InitTaxesGrid()
{
var layout = _taxesGrid.DisplayLayout;
var band0 = layout.Bands[0];
var cols = band0.Columns;

cols.Add("University", "University");
cols[UNIVERSITY].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
cols[UNIVERSITY].Nullable = Infragistics.Win.UltraWinGrid.Nullable.EmptyString;
cols.Add("Tax", "Tax");
}

加载税后

public void LoadOfficeTaxes(List<OfficeTaxes> taxes)
{
_taxesGrid.AfterCellActivate += new EventHandler(_taxesGrid_AfterCellActivate);
_taxesGrid.DataSource = taxes;
}

与此同时,我正在加载一个大学列表以绑定到UltraDropDown

static UltraDropDown uniCombo;
public void LoadUniversities(List<University> list)
{
uniCombo = new UltraDropDown();
this.Controls.Add(uniCombo);
uniCombo.DisplayLayout.Bands[0].Columns.Add("Name");
uniCombo.DisplayLayout.Bands[0].Columns["Name"].Width = 500;
uniCombo.ValueMember = "ID";
uniCombo.DisplayMember = "Name";
uniCombo.DisplayLayout.NewColumnLoadStyle = NewColumnLoadStyle.Hide;

uniCombo.DataSource = list;
}

最后,当用户点击一个单元格时,我处理了CellActivate事件,并为一个单元格的ValueList提供了UltraDropDown

void _taxesGrid_AfterCellActivate(object sender, EventArgs e)
{
UltraGrid g = sender as UltraGrid;
if (g.ActiveCell.Column.Key == "University")
{
_taxesGrid.DisplayLayout.Bands[0].Columns["University"].ValueList = uniCombo;
}
}

问题是,当我从下拉列表中选择一个值并移动到另一个单元格时,网格会抛出 “无法更新数据值:无法从'System.String'转换为'CompanyName.Entities.University'”

那么我如何使用下拉列表中的选定值更新单元格?

修改 我在Infragistics论坛http://www.infragistics.com/community/forums/p/74722/377722.aspx#377722

中找到了答案

我的错误是我绑定了大学专栏,这是一个导航属性。相反,我必须使用UniversityID。

0 个答案:

没有答案
相关问题