none
DataGridView中崁入的下拉選單控制項,無法下拉 RRS feed

  • 問題

  •  

    請教各位一個怪問題.....
    我目前設計在DataGridView裡的某個Column,崁入一個下拉選單的控制項
    因此,我就利用了DataGridViewComboBoxColumn 這個Class來進行設計

    而下拉選單中的Item,來自一個SQL語法,撈出來後有三個項目,大致寫法如下

     

    Code Snippet

    DataGridViewComboBoxColumn GuestStatColumn = new DataGridViewComboBoxColumn();  

     

    SelGuestStat();


    dataGridView2.Columns.Insert(4, GuestStatColumn);
    dataGridView2.EditMode = DataGridViewEditMode.EditOnEnter;
    GuestStatColumn.FlatStyle = FlatStyle.System;


     

    //=====撈取下拉選單內含項目===========

    private void SelGuestStat()
    {            
       SQL1 = "";
       SQL1 = " SELECT PARA_VALUE,PARA_ID FROM G_SYS_PARA WHERE PARA_NAME='訪客狀態' ";

     

       da2 = new SqlDataAdapter(SQL1, conn1);
       da2.Fill(dt4);            
       GuestStatColumn.DataSource = dt4;
       GuestStatColumn.DataPropertyName = "PARA_VALUE";
       GuestStatColumn.DisplayMember = "PARA_VALUE";
       GuestStatColumn.ValueMember = "PARA_ID";
       GuestStatColumn.ReadOnly = false;            
       da2.Dispose();

    }

     

     

     //=====真正DataGridView2資料來源的sql語法========
     selSQL=" select xxxxxxxxxxxxxxxxxxxxxxxxxx"


     da2 = new SqlDataAdapter(selSQL, conn1);
     da2.Fill(dt2);

     dataGridView2.DataSource = dt2;

     

     

     

     

     

    這樣設計後,也沒有啥問題,下拉選單可以成功出現在Grid中,且下拉後的確有三個Item
    而後續我又繼續擴充其他功能,一直到今天,我突然發現,這個下拉選單奱得無法下拉

    都會卡在第一個元素,Click下拉的箭頭都沒有任何反應及error
    我不知是那裡出了問題,因為這過程中功能有增加許多,當然Grid也有增加欄位(但沒有加其他的下拉選單)
    我實在無法理解是加了什麼功能導致無法下拉,我先前就有碰過一模一樣的情況

    當時,因為我有備份舊的程式(可以下拉),因此就從可以下拉的版本再開始改(把code貼回來)

    但現在又不行了,真的很奇怪,我不想再把code貼回來,因為這過程中已經又加了更多的code

    不知各位有沒有碰過這個怪問題,或是有沒有什麼方向可以提供解決...

    非常感謝

    2008年9月18日 下午 01:05

解答

  • 哎....我真是蠢

    原來是我把DataGridView,沒有設啟用編輯所導致,自然就無法下拉

     

    後續找到一篇文章(抱歉忘了網址,感謝那位前輩),說明了如何讓某些欄位可以編輯,某些欄位不能編輯

    謝謝各位,也謝謝this,耍了一個笨...

     

    Code Snippet

    private void dataGridView2_CellBeginEdit(object sender,

    DataGridViewCellCancelEventArgs e)
    {
                //====只有第五欄才可以編輯(也就是可以下拉),其餘欄位都不開放=====
                if (e.ColumnIndex == 4)
                {
                    e.Cancel = false;
                }
                else
                {
                    e.Cancel = true;
                }
    }

     

     

    2008年9月19日 上午 07:38

所有回覆

  • HI,

     

    看來是程式中其他的部分影響了DataGridViewComboBoxColumn的功能, 只好將後來加入的程式一段段註解掉, 查看到底是那一段程式碼的問題

     

    tihs

    2008年9月19日 上午 01:53
  • 哎....我真是蠢

    原來是我把DataGridView,沒有設啟用編輯所導致,自然就無法下拉

     

    後續找到一篇文章(抱歉忘了網址,感謝那位前輩),說明了如何讓某些欄位可以編輯,某些欄位不能編輯

    謝謝各位,也謝謝this,耍了一個笨...

     

    Code Snippet

    private void dataGridView2_CellBeginEdit(object sender,

    DataGridViewCellCancelEventArgs e)
    {
                //====只有第五欄才可以編輯(也就是可以下拉),其餘欄位都不開放=====
                if (e.ColumnIndex == 4)
                {
                    e.Cancel = false;
                }
                else
                {
                    e.Cancel = true;
                }
    }

     

     

    2008年9月19日 上午 07:38