none
如何讓DataGridView的游標停留在新增的那筆資料上 RRS feed

  • 問題

  • 您好:

               開發環境:vs2008 , 資料庫:ACCESS

    請問新增一筆資料儲存後,如何讓DataGridView的游標停留在新增的那筆資料上,並且textbox也會跟著datagridview秀出那筆資料

    謝謝您          
    2009年11月4日 上午 09:45

解答

  • 這就讓我更不瞭解了, 既然你的 Command和DataAdapter都是使用程式碼寫的, 為什麼DataSet卻是從工具箱拉出來的元件. (我猜BindingSource也是)
    當你用拖拉時, 編輯器會自動設定一些東西在裡面, 當你這樣做的時候, 貼上來的程式碼基本上很難看出問題在哪裡.
    建議你將DataSet與BindingSource都在程式碼中定義. 困擾會少很多.
    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年11月7日 下午 04:30
    版主

所有回覆

  • hi

    myindex = DataTable.Rows.Count

    移動游標
    DataGridView1.Rows(myindex - 1).Cells(0).Selected = True

    show data
    TextBox1.Text = DataGridView1.Rows(myindex - 1).Cells.Item(0).Value.ToString
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年11月4日 上午 11:36
  • DataGridView , 所以應該是Windows Form的應用程式, 我個人的偏好是使用BindingSource類別來處理這樣的動作
    請參閱以下幾篇文章
    MSDN文件庫
    [BindingSource 類別 ]

    點部落
    [上一筆、下一筆、第一筆、最末筆《BindingSource的應用 (1)》 ]
    [BindingNavigator《BindingSource的應用 (2)》 ]

    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年11月4日 下午 12:31
    版主
  • 您好:

    開發環境:vs2008,資料庫:access

        我發現如果用BindingSource,它抓取資料庫的位置是在bin\debug,而是不是在專案資料夾下的資料庫,這樣跟我之前的問題有衝突

    http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/16be0602-5e0b-4f27-959d-bd17d907567d

    因為一直無法立即更新DataGridView的資料,所以最後的方法是將資料庫從專案移除,這樣它就不會複製一份到debug下了,因為資料儲存完的同時,它是抓取debug下的資料庫,這時debug下的資料庫並未更新,要跳出此頁面再進去才會更新。


    謝謝
    2009年11月7日 上午 03:03
  • 位置和BindingSource有什麼關係 ?
    你抓取檔案的設定應該是和你的 ConnectionString有關吧 ?
    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年11月7日 上午 04:57
    版主
  • 您好:

          我放了一個datagridview在winform上,datagridview的datasource是DataBindingSource
    在form_Load就會有下列程式碼
      'TODO: 這行程式碼會將資料載入 'DataSet11.Data' 資料表。您可以視需要進行移動或移除。
            Me.DataTableAdapter.Fill(Me.DataSet11.Data)

    然後程式執行時就是停留在 這一段
      Me.DataTableAdapter.Fill(Me.DataSet11.Data)
         
    錯誤訊息為找不到D:\Data_Project\bin\Debug\Data.mdb檔案

    雖然我已經指定connetionString為D:\Data_Project\Data.mdb這個路徑,但只要是用BindingSource的都會抓取以上的
    路徑而產生錯誤訊息,所以我也搞不太懂,為什麼會抓那個路徑…

    謝謝^^

    2009年11月7日 上午 10:26
  • 所以你的資料是用拖拉的, 並不是自己寫程式讀取mdb檔的囉 ?
    這樣你要修改資料來源的檔案位置, 比較視覺化的方法應該是使用伺服器總管去修改資料連接才對. (如以下的圖)



    雖然拖拉很方便, 不過對於基本的概念還是要有所瞭解, 否則以後寫程式會很難靈活運用.
    基本上決定你連接到哪個檔案是由DbDataAdapter 類別和指派給它的DbConnection 類別決定的, BindingSource只是個中介層, 與你的連接無關.
    以下MSDN文件庫文章可以參考,建議你好好仔細的把這些文章看一看,光看範例不瞭解原理,以後你會越寫越痛苦:
    [用戶端和中介層程式設計 - 資料存取 區域資料概觀 ]
    [用戶端和中介層程式設計 - 資料存取 逐步解說:連接至 Access 資料庫中的資料 ]


    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年11月7日 下午 02:56
    版主
  • 不是也,我是自己寫連線字串的
     Public sCN0 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DATA\DB.mdb"
    我不是用拉的,

     Dim OleDbCommand1 As New OleDbCommand
            Dim OleDbConnection1 As New OleDbConnection
            Dim OleDbDataAdapter1 As New OleDbDataAdapter
            Dim OleDbCommand2 As New OleDbCommand
            Dim OleDbDataAdapter2 As New OleDbDataAdapter

            OleDbConnection1.ConnectionString = sCN0
            OleDbConnection1.Open()
            OleDbCommand2.CommandText = "SELECT * FROM Head"

            OleDbCommand2.Connection = OleDbConnection1
            OleDbDataAdapter2.SelectCommand = OleDbCommand2

            Me.DataSet11.Head.Clear()
            OleDbDataAdapter2.Fill(Me.DataSet11.Head)

            OleDbConnection1.Close()

    2009年11月7日 下午 04:18
  • 這就讓我更不瞭解了, 既然你的 Command和DataAdapter都是使用程式碼寫的, 為什麼DataSet卻是從工具箱拉出來的元件. (我猜BindingSource也是)
    當你用拖拉時, 編輯器會自動設定一些東西在裡面, 當你這樣做的時候, 貼上來的程式碼基本上很難看出問題在哪裡.
    建議你將DataSet與BindingSource都在程式碼中定義. 困擾會少很多.
    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年11月7日 下午 04:30
    版主
  • 謝謝您,我會再試試看。
    2009年11月10日 上午 07:39