【问题标题】:How to populate aspxcombobox with selected value如何用选定的值填充 aspxcombobox
【发布时间】:2015-03-11 15:18:16
【问题描述】:

我需要使用 DevExpress ASPxGridView。我有一个数据源对象,它返回重要的两列,ObjectType 和 ObjectID。 ObjectType 可以是 Dogs 或 Cats。 ObjectID 是一个 int 值,给出了 Dog 或 Cat 的 ID。希望这是有道理的。 ObjectID 由 Dog 表或 Cat 表选择,它们是缩进表,所以我不能以任何方式加入它们。

所以基本上它看起来像这样:

对象表: ObjectType varchar(“狗”或“猫”) 对象ID int

狗桌 身份证号码 名称 varchar

猫桌 身份证号码 名称 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>

【问题讨论】:

    标签: asp.net aspxgridview


    【解决方案1】:

    如果我正确理解了您的问题,您所要做的就是:

    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;
    }
    

    我希望它会给你想要的结果。

    【讨论】:

    • 我认为这很有帮助,但我得到了可怕的“对象未设置为对象的实例”。它指的是组合框。我尝试这样做: ASPxComboBox cbCats = (ASPxComboBox)grid.FindEditRowCellTemplateControl(grid.Columns["CatsID"] as GridViewDataComboBoxColumn, "cbCats");
    • 我没有在 DevExpress 及其网格中工作过,所以不确定语法。我认为发布一个关于它的新问题可能会给你一些帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2017-06-15
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多