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 コンボの中身が空のまま・・・エラーも発生するし・・・
*/
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 コンボの中身が空のまま・・・エラーも発生するし・・・
*/
以下の*****の箇所を参照
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)