Asp.net 将ASPxComboBox与ASPxGridView一起使用时,需要设置初始值
我试图使用Asp.net 将ASPxComboBox与ASPxGridView一起使用时,需要设置初始值,asp.net,devexpress,aspxgridview,aspxcombobox,Asp.net,Devexpress,Aspxgridview,Aspxcombobox,我试图使用ASPxGridView来显示ASPxComboBox控件的列表。网格中的行和组合框中的选项列表都是从代码填充的。我在设置组合框的初始值时遇到问题 我希望它看起来像下图 正如您在屏幕截图中看到的,我已经能够填充网格视图和组合框,但是我不知道如何设置组合框的初始值 在内部组合框的Init事件中,没有明显的属性来检索绑定对象 我确实在StackOverflow上发现了几个其他问题,答案是在组合框中添加绑定属性。但是,将SelectedIndex='添加到InnerCombo的声明中会出
ASPxGridView
来显示ASPxComboBox
控件的列表。网格中的行和组合框中的选项列表都是从代码填充的。我在设置组合框的初始值时遇到问题
我希望它看起来像下图
正如您在屏幕截图中看到的,我已经能够填充网格视图和组合框,但是我不知道如何设置组合框的初始值
- 在内部组合框的Init事件中,没有明显的属性来检索绑定对象李>
- 我确实在StackOverflow上发现了几个其他问题,答案是在组合框中添加绑定属性。但是,将
添加到SelectedIndex='
的声明中会出现错误“诸如Eval()、XPath()和Bind()等数据绑定方法只能在数据绑定控件的上下文中使用。”InnerCombo
<%@ Page Title="" Language="C#" MasterPageFile="~/Light.master"
AutoEventWireup="true" CodeBehind="Testing.aspx.cs" Inherits="MyProject.Testing" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<dx:ASPxGridView ID="MyGridView" runat="server" KeyFieldName="Name">
<Columns>
<dx:GridViewDataColumn FieldName="Name" />
<dx:GridViewDataColumn FieldName="Level">
<DataItemTemplate>
<dx:ASPxComboBox
runat="server"
ID="InnerCombo"
ValueField="ID"
TextField="Desc"
ValueType="System.Int32"
OnInit="InnerCombo_Init" />
</DataItemTemplate>
</dx:GridViewDataColumn>
</Columns>
</dx:ASPxGridView>
<dx:ASPxButton runat="server" ID="btnSubmit" Text="Submit" OnClick="btnSubmit_Click" />
</asp:Content>
Testing.aspx.cs:
public partial class Testing : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.MyGridView.DataSource = GetDefaultSettings();
this.MyGridView.DataBind();
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
Debug.WriteLine("btnSubmit_Click");
for (int i = 0; i < MyGridView.VisibleRowCount; i++)
{
object[] row = (object[])MyGridView.GetRowValues(i, "Name", "Value");
// row[1] is null, but we can get the data by finding the combo box itself.
GridViewDataColumn col = (GridViewDataColumn)MyGridView.Columns["Value"];
ASPxComboBox innerCombo = (ASPxComboBox)MyGridView.FindRowCellTemplateControl(i, col, "InnerCombo");
Debug.WriteLine("{0} = {1}", row[0], innerCombo.Value);
}
}
protected void InnerCombo_Init(object sender, EventArgs e)
{
Debug.WriteLine("InnerCombo_Init");
ASPxComboBox innerCombo = sender as ASPxComboBox;
if (innerCombo != null)
{
innerCombo.DataSource = GetValues();
innerCombo.DataBind();
}
}
private static List<ValueClass> GetValues()
{
// Simple for testing; actual method will be database access.
return new List<ValueClass>()
{
new ValueClass(0, "Zero (default)"),
new ValueClass(1, "One"),
new ValueClass(2, "Two"),
new ValueClass(3, "Three"),
};
}
private static List<SettingClass> GetDefaultSettings()
{
// Simple for testing; actual method will be database access + post-processing.
return new List<SettingClass>()
{
new SettingClass("AA", 0),
new SettingClass("BB", 1),
new SettingClass("CC", 0),
};
}
public class ValueClass
{
public int ID { get; private set; }
public string Desc { get; private set; }
public ValueClass(int id, string desc)
{
this.ID = id;
this.Desc = desc;
}
}
public class SettingClass
{
public string Name { get; set; }
public int Value { get; set; }
public SettingClass(string name, int value)
{
this.Name = name;
this.Value = value;
}
}
}
公共部分类测试:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!this.IsPostBack)
{
this.MyGridView.DataSource=GetDefaultSettings();
this.MyGridView.DataBind();
}
}
受保护的void btnsupmit\u单击(对象发送者,事件参数e)
{
Debug.WriteLine(“btnSubmit_Click”);
对于(int i=0;i
不熟悉ASPx控件,但这对我来说适用于传统的asp下拉列表:SelectedValue=”
我尝试过,但它说“诸如Eval()、XPath()和Bind()等数据绑定方法只能在数据绑定控件的上下文中使用。”我认为DataItemTemplate
设置正确,但是使用数据绑定可能需要有所不同。这是使用devexpress控件的许多陷阱之一。它们只是在现实世界中不可用。