我需要使用 DevExpress ASPxGridView。我有一个数据源对象,它返回重要的两列,ObjectType 和 ObjectID。ObjectType 可以是 Dogs 或 Cats。ObjectID 是一个 int 值,给出了 Dog 或 Cat 的 ID。希望这是有道理的。ObjectID 由 Dog 表或 Cat 表选择,它们是缩进表,所以我不能以任何方式加入它们。
所以基本上它看起来像这样:
对象表:ObjectType varchar ("Dogs" or "Cats") ObjectID int
Dogs 表 ID int 名称 varchar
Cats 表 ID int 名称 varchar
我已经能够通过组合框编写适当的 objectType,并通过使用由数据源填充的两个控件 cbDogs 和 cbCats 编写 ObjectID。
我想不通的是,当我编辑 ASPxGridView 时,如何在 cbCats 或 cbDogs 中显示对象值。例如,如果 ObjectType 是 Cats 并且 ObjectID 是 1,那么我想在 cbCats 中显示与 ID 为 1 对应的名称。我真正想要做的是这样的事情。显然,这段代码根本不起作用。
if (ObjectType = "Cats")
{
object objID = grid.GetRowValuesByKeyValue(e.KeyValue, "ObjectID");
string objIDstr = objID.ToString()
cbCats.SelectedValue = objIDstr // or something like this
}
如果这有帮助,这里是 aspx 页面中猫的声明。
<dx:GridViewDataComboBoxColumn Caption="Cat Name" FieldName="CatID" Name="CatName" Visible="false">
<PropertiesComboBox DataSourceID="dsCatName" TextField="Name" ValueField="ID" ValueType="System.Int32">
</PropertiesComboBox>
<EditItemTemplate>
<dx:ASPxComboBox ID="cbCat" runat="server" DataSourceID="dsCatName" TextField="Name" ValueField="ID"
Value='<%# Bind("CatID") %>' AutoPostBack="false" ValueType="System.Int32" > </dx:ASPxComboBox>
</EditItemTemplate>
</dx:GridViewDataComboBoxColumn>