解決DevExpress的RepositoryItemCheckEdit類型的多選框不能多選問題


近日,在研究功能比較強大的.net第三方控件developer express,竟然發現里面的模板列RepositoryItemCheckEdit默認的狀態和單選鈕一樣,雖然我們有時候也很需要這樣的功能,但是有時候我們也要有復選按鈕的功能,最頭疼的莫過於這個東東的教程,幫助啥的全是英文的.所以在求助網上發現沒有滿意的答案之后,決心自己狠砸單詞,終於黃天不負有心人...我覺得好多人一定也在為這個控件的這個功能而發愁,所以覺得應該寫些東西,其實就這個動能也沒有什么太神秘,只不過找它的屬性方法的 時候比較費時間.

 

首先,先定義一個新列,是個綁定的列:(拿綁定列為例)

  1.             gridView1.Columns[10].Caption = "新列1";
  2.             RepositoryItemCheckEdit re3 = new RepositoryItemCheckEdit();
  3.             gridView1.Columns[10].ColumnEdit = re3;
  4.             gridView1.Columns[10].Visible = true;
  5.             re3.QueryCheckStateByValue += new DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventHandler(re3_QueryCheckStateByValue);//定義這個事件是關鍵,因為就靠它了

然后就是我們的關鍵事件里要寫的東西了:

  1. void re3_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e)
  2.         {
  3.             string val = "";
  4.             if (e.Value != null)
  5.             {
  6.                 val = e.Value.ToString();
  7.             }
  8.             else
  9.             {
  10.                 val = "True";//默認為選中
  11.             }
  12.             switch (val)
  13.             {
  14.                 case"True":
  15.                     e.CheckState = CheckState.Checked;
  16.                     break;
  17.                 case"False":
  18.                     e.CheckState = CheckState.Unchecked;
  19.                     break;
  20.                 case"Yes":
  21.                     gotocase"True";
  22.                 case"No":
  23.                     gotocase"False";
  24.                 case"1":
  25.                     gotocase"True";
  26.                 case"0":
  27.                     gotocase"False";
  28.                 default:
  29.                     e.CheckState = CheckState.Checked;
  30.                     break;
  31.             }
  32.             e.Handled = true;
  33.         }

對於新加的列,研究了半天沒有什么可以實現的方法,不過最后通過改變Sql語句實現了,不如"select '1' as 新列1 from table1 "   這樣不就相當於綁定了嘛,所以說還是可以當綁定列來使用的.      

至此,大功完成!就這么簡單...有余力的朋友,還可以再看看QueryValueByCheckState事件,它和我上面提的事件是一對的!呵呵

 

另外

GridControl如果要支持多選,設置Options->OptionSeletion->MultiSelet為true就ok。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM