我需要使用DevExpress ASPxGridView。我有一个数据源对象,它返回两个重要的列,ObjectType和ObjectID。 ObjectType可以是Dogs或Cats。 ObjectID是一个int值,给出Dog或Cat的ID。希望这是有道理的。 ObjectID由Dog表或Cat表选择,它们是indendent表,因此我无法以任何方式加入它们。
所以基本上它看起来像这样:
对象表: ObjectType varchar(“Dogs”或“Cats”) ObjectID int
狗桌 ID int 名称varchar
猫表 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>
答案 0 :(得分:2)
如果我理解你的问题,你所要做的就是:
if(ObjectType=="Cats")
{
Int32 objID = Convert.toInt32(grid.GetRowValuesByKeyValue(e.KeyValue, "ObjectID"));
cbCats.Items[cbCats.Items.FindByValue(objId)].selected = true;
}
作为预防措施,您可以像这样检查:
if(cbCats.Items.FindByValue(objID) != null)
{
cbCats.Items[cbCats.Items.FindByValue(objId)].selected = true;
}
else
{
cbCats.Items[0].selected = true;
}
我希望它会给你你想要的结果。