2011-10-15 56 views
-1

我有一个gridview加载了来自我的数据库的数据和一个gridview交换函数,在列之间交换数据后调用“优先级”,我想保存这些更改到我的数据库。将数据集表格数据的特定列更新到SQL数据库

只有“优先级”列值会发生变化,我如何只更新我的数据集表的列到我的SQL数据库?请指教,谢谢!

代码:

Protected Sub Gridviewselectbus_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) 

     If e.CommandName = "Up" Then 

      Dim index As Int16 = Convert.ToInt16(e.CommandArgument) 
      If index = 0 Or index = 1 Then 
       Exit Sub 
      End If 

      Dim objCampaignManagementTable As New CampaignManagementBLL 
      Dim ds As DataSet = objCampaignManagementTable.SelectCampaignManagementTableListing() 

      Dim dtr As DataRow = ds.Tables(0).Rows(index - 1) 

      Dim dtrSwap As DataRow = ds.Tables(0).Rows(index - 2) 
      Dim dc As DataColumn = ds.Tables(0).Columns(6) 

      'Dim value As Int16 = Convert.ToInt16(dt.Rows(index)("Priority")) 
      Dim value As Int16 = CType((dtr)(dc), Short) 
      Dim temp1 As Int16 = value 

      'Increases the selected row's priority 
      dtr(dc) = value - 1 

      'Decreases the priority of the row that is on top of the selected row by assigning 
      'the original selected row value to it. 
      dtrSwap(dc) = value 

      ds.Tables(0).DefaultView.Sort = "Priority" 
      ds.Tables(0).AcceptChanges() 
      dtNew = ds.Tables(0).Copy() 
      uigvList.DataSource = ds.Tables(0) 
      uigvList.DataBind() 
      ds.Tables(0).AcceptChanges() 

      For i As Integer = 0 To uigvList.Rows.Count - 1 
       dtNew.Rows(i)("Code") = uigvList.Rows(i).Cells(1).Text 
       dtNew.Rows(i)("Name") = uigvList.Rows(i).Cells(2).Text 
       dtNew.Rows(i)("Type") = uigvList.Rows(i).Cells(3).Text 
       dtNew.Rows(i)("ActiveDateFrom") = uigvList.Rows(i).Cells(4).Text 
       dtNew.Rows(i)("ActiveDateTo") = uigvList.Rows(i).Cells(5).Text 
       dtNew.Rows(i)("Priority") = uigvList.Rows(i).Cells(6).Text 
      Next 

      ' Update database 
End if 

    If e.CommandName = "down" Then 

' Down code here 

End Sub 

回答

1

看看这个代码这只更新特定列,然后同时更新SQL Server数据库..

我希望它会帮助你..

注意:catDA意思是数据适配器....并且这仅仅是示例...如何更新.....

catDA.UpdateCommand = new OdbcCommand("UPDATE Categories SET CategoryName = ? " + 
             "WHERE CategoryID = ?" , nwindConn); 

catDA.UpdateCommand.Parameters.Add("@CategoryName", OdbcType.VarChar, 15, "CategoryName"); 

OdbcParameter workParm = catDA.UpdateCommand.Parameters.Add("@CategoryID", OdbcType.Int); 
workParm.SourceColumn = "CategoryID"; 
workParm.SourceVersion = DataRowVersion.Original; 

DataSet catDS = new DataSet(); 
catDA.Fill(catDS, "Categories");  

DataRow cRow = catDS.Tables["Categories"].Rows[0]; 

cRow["CategoryName"] = "New Category"; 

DataRow[] modRows = catDS.Tables["Categories"].Select(null, null, DataViewRowState.ModifiedCurrent); 
catDA.Update(modRows); 
+0

出于好奇,为什么ODBC在这里? –

+0

@MarcGravell这只是一个例子,我们可以用sql数据库替换... –

相关问题