2015-10-30 77 views
-1

我有一个应用程序与DataGridView它,它只是一组列和3个按钮。DataGridView和刷新数据更改

当我选择“Get Lead”按钮时,我希望将'Assigned'列更改为'Assigned',因为get Lead按钮更新后台中的SQL表,所以我工作得很好。

什么也没有做的就是更新实时DataGridView的,所以我加了一个TableAdapter.Fill方法我做按下按钮后,这里的问题是它移动光标的位置,并重绘整个的DataGridView。

虽然它实现了我想要的,但从用户的角度来看,它看起来很差。

我该如何解决这个问题,如果我的滚动条移过来,我选择'Get Lead'并且列更改为'Assign',DataGridView立即反映数据库中的数据,而不'重绘'DataGridView。

这是我当我点击有关按钮代码:

Dim intCurrentRow As Integer = Me.DataGridView1.CurrentCell.RowIndex 
Dim intCurrentColumn As Integer = Me.DataGridView1.CurrentCell.ColumnIndex 

和恢复使用Fill后,这个信息:调用Fill方法之前

Private Sub LeadsDGV_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles LeadsDGV.CellContentClick 

    Try 

     Dim senderGrid = DirectCast(sender, DataGridView) 

     If TypeOf senderGrid.Columns(e.ColumnIndex) Is DataGridViewButtonColumn AndAlso e.RowIndex >= 0 Then 
      If LeadsDGV.Columns(e.ColumnIndex).Name = "GetLeadBtn" Then 
       LMSMainTableAdapter.GetLead(ActiveDirectory.ADUsername, LeadsDGV.Rows(e.RowIndex).Cells(0).Value()) 
      ElseIf LeadsDGV.Columns(e.ColumnIndex).Name = "AssignLeadBtn" Then 
       'MsgBox("Row Index " & e.RowIndex & " Column: " & LeadsDGV.Columns(e.ColumnIndex).Name) 
      ElseIf LeadsDGV.Columns(e.ColumnIndex).Name = "DelLeadBtn" Then 
       LMSMainTableAdapter.DeleteLead(ActiveDirectory.ADUsername, LeadsDGV.Rows(e.RowIndex).Cells(0).Value()) 
       LMSMainTableAdapter.Fill(LMSDataset.LMS_MainLeads) 
      End If 
     End If 

    Catch ex As Exception 
     Logging.ReportError(ex) 
    End Try 

End Sub 

回答

0

您可以保存当前小区信息:

Me.DataGridView1.CurrentCell = Me.DataGridView1.Rows(intCurrentRow).Cells(intCurrentColumn)