2016-11-23 12 views
1

データソース(SQL Server)としてビューを持つDataGridViewがあります。私が何をしていても、そのビューを読み書きすることができないので、私はそれを回避しようとしています。ある列を編集可能にする必要があるので、ArrayListを作成してデータソースとして設定できると考えました。 ArrayListには35行と4列のデータが含まれていますが、DGVにはデータがありません。ここに私のコードです:ArrayListをDataGridViewのソースとして表示しない

// get the data from the Table adapter, put it into an ArrayList then display it in the DataGridView -- called from Load() 

    private void FillReportDistributionTX() 
    { 
     DataTable dt = this.dLV_ReportDistributionTableAdapter.GetData(); 
     DGVlist = ConvertDTtoArray(ref dt); 
     dLV_UserReportsDataGridView.DataSource = DGVlist; 
     dLV_UserReportsDataGridView.Refresh(); 
    } 

    // convert to Array 
    public ArrayList ConvertDTtoArray(ref DataTable dt) 
    { 
     ArrayList converted = new ArrayList(dt.Rows.Count); 
     foreach (DataRow row in dt.Rows) 
     { 
      converted.Add(row); 
     } 

     return converted; 

    } 

私は完全に困惑しています。どんな助けやアドバイスも大歓迎です。

答えて

1

あなたはこれらの列が表示されますDataGridViewDataSourceとしていくつかのDataRowを含む配列リストを設定します。

RowError | RowState | Table | HasErrors 

DataGridViewDataRowの閲覧可能なプロパティが表示されますのでです。

しかし、なぜ同じ行のDataTableに列が表示されるのですか?データバインディングのために使用されるDataTableDataViewは、結合のために利用可能なプロパティはバインドするオブジェクトのパブリックプロパティ異なるバインド可能リストのスキーマを発見する機能を提供するITypedListインタフェースを実装するためにです

に。実際にはColumnsに基づいて作成されたいくつかのプロパティ記述子を含むPropertyDescriptorCollectionを返します。DataTableです。

+1

ところで、 'ArrayList'はレガシータイプであり、すべてが同じ型の要素のリストを使いたい場合は' List 'を使うことができます。しかし 'List 'はここでは役に立たず、配列リストのように機能します。理由のために答えの第二部を読んでください。 –

関連する問題