2013-09-24 47 views
0

夥計們我有一個網格,需要檢索文本輸入,然後插入到數據庫。網格看上去像下面插入一個以上的記錄到SQL服務器

從上面允許用戶像他這樣需要儘可能多的行傳遞到數據庫。我使用下面的方法。

private void insert() 
     { 
      connection.Open(); 

      for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++) 
      { 
       string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID)"; 

       SqlCommand cmd = new SqlCommand(sql, connection); 
       cmd.CommandType = CommandType.Text; 

       cmd.Parameters.AddWithValue("@row1", gvAdditionalDetails.Rows[i].Cells[1].Text.Trim()); 
       cmd.Parameters.AddWithValue("@row2", gvAdditionalDetails.Rows[i].Cells[2].Text.Trim()); 
       cmd.Parameters.AddWithValue("@contactID", 39); 
       cmd.ExecuteNonQuery(); 
      } 
      connection.Close(); 
     } 

以上方法循環把我的網格,怎麼過是返回null的列式具有下拉選擇和說明具有tetxbox控制。我不能單獨調用這個控件,因爲它們是在網格中聲明的。如何從下拉列表中檢索選定項目的文本,並從文本框中插入文本。代碼gvAdditionalDetails.Rows[i].Cells[1].Text.Trim()返回null。

+0

你可以顯示你的嘗試到目前爲止? –

+0

@ Mike確定。對不起忙於嘗試之前沒有注意到您的評論。你現在可以看到更新嗎? –

+0

謝謝我現在就去,不知道它是否是最好的方式。 –

回答

3

您需要引用gridview行內的控件。

private void insert() 
     { 
      connection.Open(); 

      for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++) 
      { 
       string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID)"; 

       SqlCommand cmd = new SqlCommand(sql, connection); 
       cmd.CommandType = CommandType.Text; 

       cmd.Parameters.AddWithValue("@row1", ((DropdownList)gvAdditionalDetails.Rows[i].FindControl("DropDownListType")).SelectedItem.Text.Trim()); 
       cmd.Parameters.AddWithValue("@row2", ((TextBox)gvAdditionalDetails.Rows[i].FindControl("txtDescription")).Text.Trim()); 
       cmd.Parameters.AddWithValue("@contactID", 39); 
       cmd.ExecuteNonQuery(); 
      } 
      connection.Close(); 
     } 
2
INSERT INTO Table (Column1, Column2) VALUES 
(Value1, Value2), (Value1, Value2) 
+0

雖然你不能這樣做在MSSQL 2005,http://stackoverflow.com/questions/2624713/how-do-i-insert-multiple-rows-without-repeating-the-insert-into-dbo-blah-部分 –

+0

你不能在2005年或更早,但我不認爲2005年是在問題中指定的。我認爲2008/2012年都可以用這個語法 – Greg

+0

謝謝你們。但我循環並在時間插入一行。請參閱上述更新。但我無法從兩個字段檢索輸入。 –

0
INSERT INTO Table (Column1, Column2) 
select value1, value2 
union all 
select value1, value2 
union all 
select value1, value2 
0

感謝所有。我循環並檢索輸入如下。我不確定它是實現這一目標的最佳方式,但它確實對我有用。

private void insert() 
     { 
      connection.Open(); 


      for(int i=0; i< gvAdditionalDetails.Rows.Count ; i++) 
      { 
       DropDownList DropDownListType = 
         (DropDownList)gvAdditionalDetails.Rows[i].Cells[1].FindControl("DropDownListType"); 



       TextBox TextBoxDescription = 
       (TextBox)gvAdditionalDetails.Rows[i].Cells[i].FindControl("txtDescription"); 

       string sql = "insert into [CONTACT_DETAILS] (type,description,contactID) VAlUES (@row1,@row2,@contactID)"; 

       SqlCommand cmd = new SqlCommand(sql, connection); 
       cmd.CommandType = CommandType.Text; 

       cmd.Parameters.AddWithValue("@row1", DropDownListType.SelectedItem.Text.Trim()); 
       cmd.Parameters.AddWithValue("@row2", TextBoxDescription.Text.Trim()); 
       cmd.Parameters.AddWithValue("@contactID", 39); 
       cmd.ExecuteNonQuery(); 
      } 
      connection.Close(); 
     } 
相關問題