SSブログ

DataGridViewのComboBoxのDataBindの不思議 [dotNET]

/*
dataGridView1はデザイン画面で作成したDataGridView
column1はデザイン画面で作成したDataGridViewComboBoxColumn
*/

private DataSet DsList = null;
private DataView DvList = null;

private void Form1_Load(object sender, EventArgs e)
{

#region "DataGridViewComboBoxColumnの設定"
DataTable weekTable = new DataTable("WeekTable");
weekTable.Columns.Add("Display", typeof(string));
weekTable.Columns.Add("Value", typeof(string));
weekTable.Rows.Add("日曜日", "0");
weekTable.Rows.Add("月曜日", "1");
weekTable.Rows.Add("火曜日", "2");
weekTable.Rows.Add("水曜日", "3");
weekTable.Rows.Add("木曜日", "4");
weekTable.Rows.Add("金曜日", "5");
weekTable.Rows.Add("土曜日", "6");

Column1.DataSource = weekTable;
Column1.ValueMember = "Value";
Column1.DisplayMember = "Display";
#endregion

#region "DataGridViewの設定"
DataTable dt = null;
DataColumn dc = null;

DsList = new DataSet();
dt = new DataTable("DataList");
DsList.Tables.Add(dt);

dc = new DataColumn("week");
dc.DataType = Type.GetType("System.String");
dc.ReadOnly = false;
dt.Columns.Add(dc);

DvList = dt.DefaultView;
DvList.AllowNew = true;
DvList.AllowEdit = true;
DvList.AllowDelete = true;
dataGridView1.DataSource = DvList;
#endregion

DataRowView dr = DvList.AddNew();
dr["week"] = "5";
/*
この順番ならOK
*/
----------------------------------------------------------------------------------------------------
private DataSet DsList = null;
private DataView DvList = null;

private void Form1_Load(object sender, EventArgs e)
{

#region "DataGridViewの設定"
DataTable dt = null;
DataColumn dc = null;

DsList = new DataSet();
dt = new DataTable("DataList");
DsList.Tables.Add(dt);

dc = new DataColumn("week");
dc.DataType = Type.GetType("System.String");
dc.ReadOnly = false;
dt.Columns.Add(dc);

DvList = dt.DefaultView;
DvList.AllowNew = true;
DvList.AllowEdit = true;
DvList.AllowDelete = true;
dataGridView1.DataSource = DvList;
#endregion

#region "DataGridViewComboBoxColumnの設定"
DataTable weekTable = new DataTable("WeekTable");
weekTable.Columns.Add("Display", typeof(string));
weekTable.Columns.Add("Value", typeof(string));
weekTable.Rows.Add("日曜日", "0");
weekTable.Rows.Add("月曜日", "1");
weekTable.Rows.Add("火曜日", "2");
weekTable.Rows.Add("水曜日", "3");
weekTable.Rows.Add("木曜日", "4");
weekTable.Rows.Add("金曜日", "5");
weekTable.Rows.Add("土曜日", "6");

Column1.DataSource = weekTable;
Column1.ValueMember = "Value";
Column1.DisplayMember = "Display";
#endregion

DataRowView dr = DvList.AddNew();
dr["week"] = "5";
/*
NG コンボの中身が空のまま・・・エラーも発生するし・・・
*/
nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 1

ツィイ

以下の*****の箇所を参照
Public Class Form1

  Private dataSet1 As New DataSet()
  Private dataView1 As DataView
  Private deleteNo = 1

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dt = dataSet1.Tables.Add("dataTable01")
    With dt
      .Columns.Add("No.", GetType(Integer))
      .Columns.Add("TextValue", GetType(String))
      .Rows.Add(1, "1番目")
    End With

    dataView1 = dt.DefaultView
    With dataView1
     .AllowNew = False
     .AllowEdit = False
     .AllowDelete = False
     .Sort = "No."
    End With

    DataGridView1.DataSource = dataView1
    DataGridView1.CurrentCell = Nothing

  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    dataView1.AllowNew = True
    Dim no As Integer = dataView1.Count + 1
    Dim drv As DataRowView = dataView1.AddNew()
    drv("No.") = no
    drv("TextValue") = no.ToString() & "番目"
    '*****
    drv.EndEdit()
    '*****
    dataView1.AllowNew = False

  End Sub

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    dataView1.AllowDelete = True
    For Each drv As DataRowView In dataView1
      If drv("No.") = deleteNo Then
        drv.Delete()
        Exit For
      End If
    Next

    dataView1.AllowDelete = False

  End Sub

End Class

by ツィイ (2010-02-25 15:42) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。