2013-03-11 3 views
0

Я использовал следующий код для отображения имен моих таблиц SQL db в combobox. Теперь я хочу, когда я нажимаю на любое из этих имен таблиц из поля со списком, которое мой DataGridView заполняет содержимым этой таблицы.Заполните datagridview, выбрав любую таблицу из поля со списком

У меня есть три таблицы в моей базе данных.

private void Form1_Load(object sender, EventArgs e) 
    { 
     String strConnection = "Data Source=HP\\SQLEXPRESS;database=MK;Integrated Security=true"; 

     SqlConnection con = new SqlConnection(strConnection); 
     try 
     { 

      con.Open(); 

      SqlCommand sqlCmd = new SqlCommand(); 

      sqlCmd.Connection = con; 
      sqlCmd.CommandType = CommandType.Text; 
      sqlCmd.CommandText = "Select table_name from information_schema.tables"; 

      SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd); 

      DataTable dtRecord = new DataTable(); 
      sqlDataAdap.Fill(dtRecord); 
      comboBox1.DataSource = dtRecord; 
      comboBox1.DisplayMember = "TABLE_NAME"; 
      con.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
    private void PopulateGridView(string tablename) 
    { 
     String strConnection = "Data Source=HP\\SQLEXPRESS;database=MK;Integrated Security=true"; 

     SqlConnection con = new SqlConnection(strConnection); 
     try 
     { 

      con.Open(); 

      SqlCommand sqlCmd = new SqlCommand(); 

      sqlCmd.Connection = con; 
      sqlCmd.CommandType = CommandType.Text; 
      sqlCmd.CommandText = "Select * from " + tablename; 

      SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd); 

      DataTable dtRecord = new DataTable(); 
      sqlDataAdap.Fill(dtRecord); 
      dataGridView1.DataSource = dtRecord; 

      con.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 


    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox1.SelectedValue != null) 
     { 
      PopulateGridView(comboBox1.SelectedValue.ToString()); 
     } 

    } 
} 

}

Вот мой стол (datejoin)

rahul sharma 12-1-2011 
suresh chand 23-4-2012 
prachi shukla 13-2-2011 
siddharth malhotra 25-9-2012 
saina chopra 12-8-2011 
amit mehta 20-3-2012 
+0

так что вопрос? – Zaki

+0

вопрос ват будет кодом для заполнения моего dgv содержимым таблицы i выберите из поля со списком –

ответ

1

Подписаться на SelectedIndexChanged событие выпадающего списка и получить выбранное имя таблицы из выпадающего списка. Оттуда запустите запрос для извлечения записей из таблицы и привяжите результат к представлению datagridview.

Пример:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    String strConnection = "Data Source=HP\\SQLEXPRESS;database=MK;Integrated Security=true"; 

    SqlConnection con = new SqlConnection(strConnection); 
    con.Open(); 

    string tableName = comboBox1.SelectedText; 

    SqlCommand sqlCmd = new SqlCommand(); 
    sqlCmd.Connection = con; 
    sqlCmd.CommandType = CommandType.Text; 
    sqlCmd.CommandText = "Select * from " + tableName; 

    SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd); 

    DataTable dtRecord = new DataTable(); 
    sqlDataAdap.Fill(dtRecord); 
    dgv.DataSource = dtRecord; 
    con.Close(); 
} 
+0

спасибо .. :) но plz может написать код..им новым для C# .. plz plz plz if psb –

+0

См. Мое редактирование. Кроме того, вам может потребоваться отделить ваш datalayer, создав различные классы для извлечения записей из базы данных. –

+0

показывает ошибку на sqlDataAdap.Fill (dtRecord); .... Неверный синтаксис рядом с 'from'. –

1

Вы будете иметь события на поле со списком SelectedIndexChange и передать имя таблицы вашей функции

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 
    RebindGridView(ComboBox1.SelectedValue); 
} 

Тогда в функции:

private void RebindGridView(string tablename) 
{ 
    String strConnection = "Data Source=HP\\SQLEXPRESS;database=MK;Integrated Security=true"; 

      SqlConnection con = new SqlConnection(strConnection); 
      try 
      { 

       con.Open(); 

       SqlCommand sqlCmd = new SqlCommand(); 

       sqlCmd.Connection = con; 
       sqlCmd.CommandType = CommandType.Text; 
       sqlCmd.CommandText = "Select * from " + tablename; 

       SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd); 

       DataTable dtRecord = new DataTable(); 
       sqlDataAdap.Fill(dtRecord); 
       gridview1.DataSource = dtRecords; 
       gridview1.DataBind(); 
       con.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
} 
+0

thnks, но он не работает ... :( –

+0

какая ошибка у вас есть? Также см. Мое редактирование забытое пространство между from и tablename ... это правильно сейчас. – Zaki

+0

где мне нужно для определения databind()? –

Смежные вопросы