代码在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?

查看:83
本文介绍了代码在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆