2016-06-23 5 views
0

Я хочу, чтобы отобразить данные в виде сетки путем динамического вставки данных из текстовых полей в базе данных, по нажатию кнопкиОтображение динамических данных в табличном виде

protected void Button1_Click(object sender, EventArgs e) 
    { 
     //string Name = TextBox1.Text; 
     //string Summary = TextBox2.Text; 


     //Inserts the FirstName variable into the db-table 
     SqlConnection conn = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Database.mdf;Integrated Security=True"); 
     conn.Open(); 
     SqlCommand MyCommand = new SqlCommand("INSERT INTO Table2 (Name,Summary) Values ('" + TextBox1.Text + "' , '" + TextBox2.Text + "');",conn); 
     MyCommand.ExecuteNonQuery(); 
     using (SqlCommand cmd = conn.CreateCommand()) 
     { 
      SqlCommand com = new SqlCommand("Select * from Table2", conn); 
      SqlDataAdapter sda = new SqlDataAdapter(com); 
      DataSet ds = new DataSet(); 
      sda.Fill(ds); 
      //GridView1.DataSource = ds; 
      // GridView1.DataBind(); 
     } 
     conn.Close(); 
     conn.Dispose(); 
    } 

Я не получаю сообщение об ошибке во время выполнения этой код, но он не отображает никаких данных в виде сетки.

ответ

-1

Вам необходимо расторгнуть код, в котором GridView получает привязку к источнику данных, как показано ниже.

using (SqlCommand cmd = conn.CreateCommand()) 
     { 
      SqlCommand com = new SqlCommand("Select * from Table2", conn); 
      SqlDataAdapter sda = new SqlDataAdapter(com); 
      DataSet ds = new DataSet(); 
      sda.Fill(ds); 
      GridView1.DataSource = ds.Tables[0]; 
      GridView1.DataBind(); 
     } 

Алитер: Создать DataTable вместо DataSet и заполнить его с помощью DataAdapter.

DataTable dt=new DataTable(); 
sda.Fill(dt); 
GridView1.DataSource = dt; 
GridView1.DataBind(); 

Попробуйте и сообщите нам, если это сработает для вас.

Благодаря

+0

раскомментировать, это дает мне ошибку .. – Ananya

+0

сервер Ошибка '/' Заявка. И DataSource, и DataSourceID определены в «GridView1». Удалите одно определение. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде. Сведения об исключении: System.InvalidOperationException: И DataSource, и DataSourceID определены в 'GridView1'. Удалите одно определение. – Ananya

+0

Использование DataTables, я забыл написать. ds.Tables [0] – Anurag

1

Вы должны дать в качестве источника данных DataTable вместо набора данных.

например:

using (SqlCommand cmd = conn.CreateCommand()) 
     { 
      SqlCommand com = new SqlCommand("Select * from Table2", conn); 
      SqlDataAdapter sda = new SqlDataAdapter(com); 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
+1

Вы правы.То же самое я думал опубликовать – parthi

+0

Я сделал обновления, но он дает мне ошибку ... – Ananya

+0

Ошибка сервера в '/' Application. И DataSource, и DataSourceID определены в 'GridView1'. Удалите одно определение. Описание: Необработанное исключение произошло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде. Сведения об исключении: System.InvalidOperationException: И DataSource, и DataSourceID определены в 'GridView1'. Удалите одно определение. – Ananya

0

Помимо раскомментировать эти строки кода нужно установить Datasource в DataTable, который был населен не в DataSet ...

dataGridView1.DataSource = ds.Tables[0]; 

На отдельной ноте ваш первоначальный запрос уязвим для атак SQL Injection - вы никогда не должны конкатенировать ввод пользователя для формирования SQL-запросов, вместо этого используйте Parameterized Queries

SqlCommand MyCommand = new SqlCommand("INSERT INTO Table2 (Name,Summary) Values (@tb1, @tb2);", conn); 
    MyCommand.Parameters.AddWithValue("@tb1", TextBox1.Text); 
    MyCommand.Parameters.AddWithValue(@"tb2", TextBox2.Text); 
    MyCommand.ExecuteNonQuery(); 

Вы также используете, используя заявление с SqlCommand, что вы никогда не использовать

using (SqlCommand cmd = conn.CreateCommand()) 

должно быть действительно

using (SqlCommand com = new SqlCommand("Select * from Table2", conn)) 
Смежные вопросы