Привязка GridViewComboBoxColumn к источнику данных в Page_Load - PullRequest
1 голос
/ 01 июля 2011

У меня есть сетка со столбцом 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 к источнику данных

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

Спасибо.

1 Ответ

1 голос
/ 02 июля 2011

Этот код отлично работает здесь. Убедитесь, что тип 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; }
    }
...