2016-06-23 145 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(); 
     } 

Aliter:創建DataTable而不是DataSet和使用DataAdapter填充它。

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

試試吧,讓我們知道這是否適合你。

謝謝

+0

通過取消註釋,它給我的錯誤.. – Ananya

+0

服務器錯誤'/'應用程序。 DataSource和DataSourceID都是在'GridView1'上定義的。刪除一個定義。說明:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。異常詳細信息:System.InvalidOperationException:DataSource和DataSourceID均在'GridView1'上定義。刪除一個定義。 – Ananya

+0

使用DataTables,我忘了寫。 ds.Tables [0] – Anurag

1

您必須將數據源作爲數據表而不是數據集。

如:

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

我已經完成updations,但它給我錯誤... – Ananya

+0

'/'應用程序中的服務器錯誤。 「GridView1」上定義了DataSource和DataSourceID。刪除一個定義。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 異常詳細信息:System.InvalidOperationException:DataSource和DataSourceID均在'GridView1'上定義。刪除一個定義。 – Ananya

0

除了取消註釋您需要將數據源設置爲已不填充DataSet中的數據表的這些代碼行...

dataGridView1.DataSource = ds.Tables[0]; 

在一個單獨的說明您的初始查詢很容易受到SQL注入攻擊 - 您絕不應連接用戶輸入以形成SQL查詢,而應使用參數化查詢

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(); 

您同時還使用using語句與一個SqlCommand,你從來沒有使用

using (SqlCommand cmd = conn.CreateCommand()) 

確實應該

using (SqlCommand com = new SqlCommand("Select * from Table2", conn))