代码在DataGrid视图中显示列名称。启用行“DataTable table = new DataTable();”然后单击button1和button2以查看差异。为什么ID列会改变位置? [英] Code displays column names in DataGrid View. Enable the lines "DataTable table = new DataTable();" and Click button1 and button2 to see the difference. Why does ID column change position?
本文介绍了代码在DataGrid视图中显示列名称。启用行“DataTable table = new DataTable();”然后单击button1和button2以查看差异。为什么ID列会改变位置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public Form1()
{
InitializeComponent();
}
DataTable table = new DataTable();
private void button1_Click(object sender, EventArgs e)
{
//DataTable table = new DataTable();
dataSet1.Reset();
table.Reset();
dataSet1.Tables.Add(table);
setTableForAccess(6, "Table1", dataSet1);
bindingSource1.DataSource = dataSet1.Tables[dataSet1.Tables.IndexOf(table)];
dataGridView1.DataSource = bindingSource1;
textBox1.Text = dataSet1.Tables[dataSet1.Tables.IndexOf("Table1")].Columns.IndexOf("SentenceID").ToString();
}
private void button2_Click(object sender, EventArgs e)
{
//DataTable table = new DataTable();
dataSet1.Reset();
table.Reset();
dataSet1.Tables.Add(table);
setTableForAccess1(14, "Table1", dataSet1);
bindingSource1.DataSource = dataSet1.Tables[dataSet1.Tables.IndexOf(table)];
dataGridView1.DataSource = bindingSource1;
textBox1.Text = dataSet1.Tables[dataSet1.Tables.IndexOf("Table1")].Columns.IndexOf("ID").ToString();
}
public void setTableForAccess(int rowCount, string tableName, DataSet dataSet1)//use to setup Access sourced DataSet//1/28/2016
{
rowCount -= 2; rowCount /= 2;//rowcount adjustment for Access data base
for (int j = 0; j < rowCount; j++)
{
if (!dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("ID") || !dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("SentenceID") || !dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("Kanji" + j.ToString()) || !dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("Hiragana" + j.ToString()))
{
if (!dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("ID") || !dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("SentenceID"))
{
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Clear(); dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Rows.Clear();
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("ID", typeof(int)));
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("sentenceID", typeof(ulong)));
}
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("Kanji" + j.ToString(), typeof(string)));
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("Hiragana" + j.ToString(), typeof(string)));
}
}
}
public void setTableForAccess1(int rowCount, string tableName, DataSet dataSet1)//use to setup Access sourced DataSet//1/28/2016
{
rowCount -= 1; rowCount /= 2;//rowcount adjustment for Access data base
for (int j = 0; j < rowCount; j++)
{
if (!dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("SentenceID") || !dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("Kanji" + j.ToString()) || !dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("Hiragana" + j.ToString()))
{
if (!dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Contains("SentenceID"))
{
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Clear(); dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Rows.Clear();
//dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("ID", typeof(int)));
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("sentenceID", typeof(ulong)));
}
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("Kanji" + j.ToString(), typeof(string)));
dataSet1.Tables[dataSet1.Tables.IndexOf(tableName)].Columns.Add(new DataColumn("Hiragana" + j.ToString(), typeof(string)));
}
}
}
private void button3_Click(object sender, EventArgs e)
{
dataSet1.Reset();
}
推荐答案
//DataTable table = new DataTable();//not needed with "dataGridView1.DataSource = null;" fix
private void button1_Click(object sender, EventArgs e)
{
dataSet1.Reset();
dataSet1.Tables.Add(new DataTable());
setTableForAccess(6, dataSet1.Tables[dataSet1.Tables.Count - 1], dataSet1);
dataGridView1.DataSource = null;//This line is required when DataTable is declared inside the event handler
bindingSource1.DataSource = dataSet1.Tables[dataSet1.Tables.Count - 1];
dataGridView1.DataSource = bindingSource1;
textBox1.Text = dataSet1.Tables[dataSet1.Tables.Count-1].Columns.IndexOf("ID").ToString();
}
private void button2_Click(object sender, EventArgs e)
{
dataSet1.Reset();
dataSet1.Tables.Add(new DataTable());
setTableForAccess1(14, dataSet1.Tables[dataSet1.Tables.Count - 1], dataSet1);
dataGridView1.DataSource = null;//This line is required when DataTable is declared inside the event handler
bindingSource1.DataSource = dataSet1.Tables[dataSet1.Tables.Count - 1];
dataGridView1.DataSource = bindingSource1;
textBox1.Text = dataSet1.Tables[dataSet1.Tables.Count-1].Columns.IndexOf("ID").ToString();
}
这篇关于代码在DataGrid视图中显示列名称。启用行“DataTable table = new DataTable();”然后单击button1和button2以查看差异。为什么ID列会改变位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文