我正在使用适用于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。