2009-04-14 4 views
2

数値型の列を持つDataTableがある場合。DataGridViewがDataTableにバインドされています。列挙型のコンボボックスを取得する

そして、あなたはDataGridViewこのDataTablemyDgv.DataSource = myDataTable)に..あなたがDataGridViewは、コンボボックスを表示します(または、それがドロップダウン・リストであることができますどのように

?1は、あなたができる唯一のものである場合にバインドこの列の各セルで選択しますか?コンボボックスは現在の値を選択し、他の可能な列挙値を選択可能にする必要があります。

現時点では、これらのセルは、古い列挙型の編集可能なテキストセルとして列挙型のenum値を表示します。

答えて

4

私はあなたが読んでいることを示唆しているForcing the DataGridView to do my bidding - a tale of ComboBox hackery

最初私はDataGridViewのサンプル(概要)(DataGridViewのサンプルをダウンロードしてください)について楽観的だったが、私は私が欲しかったものを何も見なかった時

do:列挙型の値をとり、コンボボックスを使ってグリッド内でそれを表現する。だから、ここで私はそれをやった。

また、あなたがHow to: Bind Objects to Windows Forms DataGridView Controlsをチェックアウトする必要があります:

次のコード例は、DataGridViewコントロールにオブジェクトのコレクションをバインドする方法を示しているので、別の行として、各オブジェクトが表示されます。この例は、列挙型を持つプロパティをDataGridViewComboBoxColumnに表示して、コンボボックスのドロップダウンリストに列挙値が含まれるようにする方法も示しています。私はここにフィットを言うつもりです何場合

2

まあ、私は知らないが、私は最近、同様の要件を持っていた:DataSetにバインドされたDataGridView内のリンクを表示し、これは

protected void grvResultado_RowDataBound(object sender, GridViewRowEventArgs e) { 
    if (grvResultado.HeaderRow == null || grvResultado.HeaderRow.Cells.Count == 0) return; 
    bool hasLink = false; 
    int ind = 0; 
    foreach (TableCell c in grvResultado.HeaderRow.Cells) { 
     if (c.Text == "link") { 
      hasLink = true; 
      break; 
     } 
     ind++; 
    } 
    if (!hasLink) return; 


    if (e.Row.RowType == DataControlRowType.DataRow) { 
     TableCell c = e.Row.Cells[ind]; 
     var lnk = new HyperLink(); 
     lnk.Text = "Ver"; 
     lnk.NavigateUrl = c.Text; 
     c.Controls.Clear(); 
     c.Controls.Add(lnk); 
    } 
} 
です

私がしたように必要なものを習得することができます

関連する問題