none
Datagridview 連結Access mdb檔路徑問題 及 CellContent_Click事件 反應會延遲 RRS feed

  • 問題

  • 今天遭遇兩個問題如下:

    環境:Visual Studio 2008 C#

    我用DataGridview連結一個Access資料庫的mdb檔,VS產生三個物件給我,分別是DataBindingSource,TableAdapter以及DataSet.

    查了許多文件之後才分別知道他們的關係。

    透過TableAdapter的Fill方法在DataGridView上面顯示mdb檔的內容。

    我是透過OleDBConnection去對我的mdb檔作修改,

    問題在於,我每次修改之後,GridView的內容並沒有改變。當然,我修改之後有在Run一次Fill Function。

    後來才發現癥結點,在於我用DataGridView所聯結的mdb檔,也就是DataSet Bind的mdb檔,居然是在Debug資料夾裡面的,

    但是我用OledB下command所修改的,居然是專案資料夾底下的mdb檔。

    然而每次重新編譯,就會顯示上次程式執行所修改後的資料庫正確內容。

    於是,我針對OledBConnection這個元件的ConnectionString屬性作設定,用視覺化的方式選擇我的資料庫位置,

    但是選擇該mdb之後,出現對話框顯示 "'SQLNCLI.1'提供者並未登錄於本機電腦上。" 然後就無法透過元件設定。

    (後來,我在Code當中做設定就可以了。)

    我的問題點在於,

    "我在使用DataGridView元件的時候,不管我的mdb檔放在哪邊,TableAdapter總是會從Debug目錄裡面去抓mdb檔!"

    而不能自己設定。我也有把該mdb加入專案,放在專案資料夾底下,但是TableAdapter always從Debug裡面去抓...

    我想要做的是可以自己設定TableAdapter的來源。(我也有對專案中的mdb設定不要複製)

    這樣一來mdb檔,勢必得跟執行檔放一起。我想另外放一個資料夾,就沒辦法了。

    想請問有甚麼辦法,可以設定TableAdapter的mdb檔來源位置呢?

     

    第二個問題,

    同上一個DataGridView,我用了CellContent_Click事件,去抓取使用者點選的,該列第一個Column的值。

    並且將該Cell值顯示在Textbox。

    code如下:

     private void DataBaseGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
          DBIDtextBox.Text = DataBaseGridView[1, e.RowIndex].Value.ToString();
        }
    

    但是實際行結果,

    並不是點一下,TextBox的數值就會馬上顯示變更,反而會延遲,點好幾下才會顯示,或者是過幾秒才顯示。

    請問這是甚麼因素呢? 該如何解決呢?

     

    謝謝各位撥冗!

     

     

     

     

    2010年8月18日 上午 11:08

解答

  • 自問自答,第二個問題是我沒按到Content上面 我按到格子裡面的空白處, what amazing !

    換成cell就沒問題了。

    • 已提議為解答 DK. Da 2010年8月21日 上午 03:48
    • 已標示為解答 Lolota Lee 2010年8月27日 上午 08:52
    2010年8月18日 上午 11:32