2014-10-30 37 views
0
Protected Sub btnSave_Click(sender As Object, e As EventArgs) 
    Dim invoiceclass As New InvoiceClass() 
    Dim invoicedb As New DbInvoiceClass() 
    invoiceclass.CustomerName = txtCustomerName.Text 
    invoiceclass.DateInvoice = txtDate.Text 
    invoiceclass.NetTotal = txtNetTotal.Text 
    invoicedb.InsertInvoice(invoiceclass) 
    Dim ID As Integer 


    Dim con As New SqlConnection(DbConnectionClass.ConnectionStringName) 


    con.Open() 
    If con.State = System.Data.ConnectionState.Open Then 

     Dim comm As New SqlCommand("SELECT MAX(Code) FROM InvoiceTB", con) 
     comm.ExecuteNonQuery() 

     ID = Convert.ToInt32(comm.ExecuteScalar()) 


     For Each item As GridViewRow In gvrview.Rows 

      'Modified according your table Definition 
      Dim statment As String = String.Format("insert into InvoiceItem (ProductName,Price, Quantity, Total,CodeInvoice) values ('{0}',{1},{2},{3},{4})", item.Cells(1).Text, item.Cells(2).Text, item.Cells(3).Text, ID.ToString()) 
      Dim cmd As New SqlCommand(statment, con) 

      cmd.CommandType = CommandType.Text 
      cmd.ExecuteNonQuery() 
      con.Close() 

      cmd.Dispose() 
     Next 




    End If 
    con.Close() 


End Sub 

它给了我这个错误....索引(基于零)必须大于或等于零并小于参数列表的大小。如何在数据库中插入gridview中的多行

回答

0

我的猜测是,你从单元索引1开始,这实际上是你的gridview的第二列。

Column2 = item.Cells(1).Text 
Column3 = item.Cells(2).Text 
Column4 = item.Cells(3).Text 

如果没有column4和你试图返回item.Cells(3)。文本,你会得到一个异常。

如果我的假设是正确的,并且您的gridview中只有3列,那么用这个替换这一行,您将全部设置。

Dim statment As String = String.Format("insert into InvoiceItem (ProductName,Price, Quantity, Total,CodeInvoice) values ('{0}',{1},{2},{3},{4})", item.Cells(0).Text, item.Cells(1).Text, item.Cells(2).Text, ID.ToString()) 
相关问题