Привязка GridViewComboBoxColumn к источнику данных в Page_Load

У меня есть сетка со столбцом GridViewComboBoxColumn. У меня есть источник данных, который представляет собой список объектов. Мне нужно назначить данные в Page_Load. Это не работает:

protected void Page_Load() {
    GridViewDataComboBoxColumn gridColumn = Grid.Columns["NumericData"]
        as GridViewDataComboBoxColumn;

    gridColumn.PropertiedropsComboBox.DataSource = DataSourceMadeUpOfAList;
    gridColumn.PropertiesComboBox.TextField = "SpelledOutNumbers";
    gridColumn.PropertiesComboBox.ValueField = "ActualNumbers";
...

Я посмотрел здесь: Привязка GridViewComboBoxColumn к источнику данных

И это работает, но только в форме редактирования. У меня включена строка фильтра, и эти раскрывающиеся списки также необходимо заполнить. Вышеупомянутое решение не работает с фильтрами (по понятным причинам). Любые идеи приветствуются.

Спасибо.


person FlyingBlind    schedule 30.06.2011    source источник


Ответы (1)


Этот код отлично работает здесь. Убедитесь, что тип ValueField и тип столбца, к которому привязан ComboBoxColumn (column.FieldName), совпадают. Наконец, вот мой пример:

    <dx:ASPxGridView ID="ASPxGridView1" Width="100%"  ClientInstanceName="grid"
    DataSourceID="SqlDataSource2" KeyFieldName="ProductID" AutoGenerateColumns="False" runat="server">
    <Columns>
        <dx:GridViewCommandColumn VisibleIndex="0">
            <ClearFilterButton Visible="True">
            </ClearFilterButton>
        </dx:GridViewCommandColumn>
        <dx:GridViewDataTextColumn FieldName="ProductID" ReadOnly="True" VisibleIndex="0">
            <EditFormSettings Visible="False" />
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="ProductName" VisibleIndex="1">
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataTextColumn FieldName="SupplierID" VisibleIndex="2">
        </dx:GridViewDataTextColumn>
        <dx:GridViewDataComboBoxColumn FieldName="CategoryID" VisibleIndex="3">
            <PropertiesComboBox ValueType="System.String">
            </PropertiesComboBox>
        </dx:GridViewDataComboBoxColumn>
    </Columns>
</dx:ASPxGridView>

        <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [Products]">
        </asp:SqlDataSource>



    protected void Page_Load(object sender, EventArgs e) {
        GridViewDataComboBoxColumn col = ASPxGridView1.Columns["CategoryID"] as GridViewDataComboBoxColumn;
        col.PropertiesComboBox.DataSource = GetDataSource();
        col.PropertiesComboBox.ValueField = "Id";
        col.PropertiesComboBox.TextField = "Text";
    }

...


public class Record {
    public Record(int id) {
        this.id = id;
        this.text = "Row " + id.ToString();
    }

    private int id;
    public int Id {
        get { return id; }
        set {
            id = value;
        }
    }
    private string text;
    public string Text {
        get { return text; }
    }
person DevExpress Team    schedule 02.07.2011
comment
Я продублировал это решение в своем текущем проекте, и оно не работает. Когда я прохожу через Page_Load и шагаю мимо параметра TextField, я просматриваю данные, и количество элементов равно 0. Данные находятся в источнике данных столбца сетки, но не похоже, что данные на самом деле привязаны к колонка. Единственная реальная разница, кроме проекта, заключается в том, что у меня нет DataSourceID в моей сетке, поскольку мои данные предоставляются в коде позади. - person FlyingBlind; 05.07.2011
comment
Кроме того, если ValueType должен соответствовать ValueField, почему для ValueType установлено значение String, когда Id является целым числом? - person FlyingBlind; 05.07.2011
comment
Поскольку ваши данные предоставляются во время выполнения, убедитесь, что вы привязали сетку к данным в событии Page_Init, как это описано в статья devexpress.com/Support/Center/kb/p/K18183.aspx - person DevExpress Team; 05.07.2011
comment
Я привязал свои данные в Init, но не в нужное время. Получил это сейчас. Спасибо! - person FlyingBlind; 06.07.2011
comment
Работает ли он как раскрывающийся фильтр в заголовке? Или он отображает раскрывающийся список в каждой строке? - person Anjum; 18.08.2014