无法在winforms中动态设置datagridview的数据源

时间:2012-03-14 05:30:13

标签: c# winforms datagridview combobox

我正在开发一个C#窗口应用程序,我在其中使用datagridview来显示数据库中的数据,我使用相同的Datagridview来编辑,删除,插入到数据库中。

我的项目用户的主要要求是选择组合框中的项目,并根据组合框中项目的选择,我想更改datagridview的数据源。

但是当我试图这样做时,我得到例外,

  1. 无法创建<TableName>的子列表

  2. 在2-3次尝试之后,它给出了另一个例外:

      

    SystemIndexOutOfBoundException:索引0没有值

  3. 我在ComboBox中选择项目的代码是:

    public void mgm_quarter_month_cb_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (mgm_quarter_month_cb.SelectedItem=="Quarter")
        {
            try
            {
                MainForm mf = new MainForm();                   
                mgm_dgv.DataSource = null;
                mgm_dgv.DataMember = "";                    
                mgm_dgv.Refresh();
                string query = "select * from Demo";
                mgm_quarter_table = getdata(query);  // GetData gets data from database
                mgm_dgv = setquarterwisedatagridview(mgm_dgv); //Arrange DatagridView on Tabpage
                mgm_dgv.DataSource = mgm_quarter_table;
                mgm_dgv.DataMember = "Demo";
                mf.mgm_tabpage.Controls.Add(mgm_dgv);
                mgm_quarter_cb.Enabled = false;
                mgm_month_cb.Enabled = false;
            }
            catch (Exception exc)
            {
                MessageBox.Show(""+exc);
            }
        }
        else if(mgm_quarter_month_cb.SelectedItem=="Month")
        {
            try
            {
                MainForm mf = new MainForm();                   
                mgm_dgv.DataSource = null;
                mgm_dgv.DataMember = "";                   
                mgm_dgv.Refresh();
                string query = "select * from Demo2";
                mgm_month_table = getdata(query);
                mgm_dgv = setmonthwisedatagridview(mgm_dgv);
                mgm_dgv.DataSource = mgm_month_table;
                mgm_dgv.DataMember = "Demo2";
                mf.mgm_tabpage.Controls.Add(mgm_dgv);
                mgm_quarter_cb.Enabled = true;
                mgm_month_cb.Enabled = true;
            }
            catch (Exception exc)
            {
                MessageBox.Show(""+exc);
            }
         }
     }  
    

    **从数据库中获取数据的方法**


    public DataTable getdata(string text)
    {
        OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;   
                Data Source=C:\Users\Vinayak\Documents\Scorecard.mdb");
        DataTable dt1 = new DataTable();
    
        string query = text;
        OleDbCommand com = new OleDbCommand(query, con);
    
        com.CommandType = CommandType.Text;
        com.CommandTimeout = 1200;
    
        con.Open();
    
        OleDbDataAdapter adpt = new OleDbDataAdapter(com);
    
        adpt.Fill(dt1);
        con.Close();
        con.Dispose();            
        return dt1;
     }
    

    如果我做错了,请告诉我。

0 个答案:

没有答案