2011-06-30 10 views
1

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"; 
... 

私はここに見てきた:これは動作しませんBinding GridViewComboBoxColumn to a datasource

そして、それは作業を行いますが、唯一の編集フォームインチ私は私のフィルタ行を有効にして、それらのドロップダウンも同様に設定する必要があります。上記の解決策は、明らかな理由でフィルタでは機能しません。任意のアイデアが評価されます。

ありがとうございました。

答えて

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

私の現在のプロジェクト内でこのソリューションを複製しても機能しません。私がPage_Loadを歩き、TextField設定を進めていくと、データを見て、Count for Itemsは0になりました。データはグリッド列のDataSourceにありますが、データが実際にバインドされているかのようには表示されません列。プロジェクト以外の唯一の本当の違いは、データがコードの中に提供されているため、グリッドにDataSourceIDがないことです。 – FlyingBlind

+0

また、ValueTypeがValueFieldと一致する場合、Idがintの場合、ValueTypeはStringに設定されますか? – FlyingBlind

+0

データは実行時に提供されるため、http://www.devexpress.com/Support/Center/kb/p/K18183.aspxの記事で説明されているように、Page_Initイベントのデータにグリッドをバインドするようにしてください –

関連する問題