Я работаю над одним окном C #, в котором я использую datagridview для отображения данных из базы данных, я использую тот же Datagridview для редактирования, удаления, вставки в базу данных.
Основным требованием пользователя моего проекта будет выбор элементов в выпадающем списке, и в зависимости от выбора элемента в выпадающем списке я хочу изменить источник данных в представлении данных.
Но когда я попытался сделать это, я получил исключение как,
Невозможно создать дочерний список для <TableName>
И после 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;
}
Пожалуйста, скажите мне, если я делаю что-то не так.