Невозможно динамически установить источник данных в datagridview в winforms - PullRequest
0 голосов
/ 14 марта 2012

Я работаю над одним окном C #, в котором я использую datagridview для отображения данных из базы данных, я использую тот же Datagridview для редактирования, удаления, вставки в базу данных.

Основным требованием пользователя моего проекта будет выбор элементов в выпадающем списке, и в зависимости от выбора элемента в выпадающем списке я хочу изменить источник данных в представлении данных.

Но когда я попытался сделать это, я получил исключение как,

  1. Невозможно создать дочерний список для <TableName>

  2. И после 2 -3 попыток выдает еще одно исключение:

    SystemIndexOutOfBoundException: индекс 0 не имеет значения

Мой код для выбора элемента в 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;
 }

Пожалуйста, скажите мне, если я делаю что-то не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...