近日,在研究功能比較強大的.net第三方控件developer express,竟然發現里面的模板列RepositoryItemCheckEdit默認的狀態和單選鈕一樣,雖然我們有時候也很需要這樣的功能,但是有時候我們也要有復選按鈕的功能,最頭疼的莫過於這個東東的教程,幫助啥的全是英文的.所以在求助網上發現沒有滿意的答案之后,決心自己狠砸單詞,終於黃天不負有心人...我覺得好多人一定也在為這個控件的這個功能而發愁,所以覺得應該寫些東西,其實就這個動能也沒有什么太神秘,只不過找它的屬性方法的 時候比較費時間.
首先,先定義一個新列,是個綁定的列:(拿綁定列為例)
- gridView1.Columns[10].Caption = "新列1";
- RepositoryItemCheckEdit re3 = new RepositoryItemCheckEdit();
- gridView1.Columns[10].ColumnEdit = re3;
- gridView1.Columns[10].Visible = true;
- re3.QueryCheckStateByValue += new DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventHandler(re3_QueryCheckStateByValue);//定義這個事件是關鍵,因為就靠它了
然后就是我們的關鍵事件里要寫的東西了:
- void re3_QueryCheckStateByValue(object sender, DevExpress.XtraEditors.Controls.QueryCheckStateByValueEventArgs e)
- {
- string val = "";
- if (e.Value != null)
- {
- val = e.Value.ToString();
- }
- else
- {
- val = "True";//默認為選中
- }
- switch (val)
- {
- case"True":
- e.CheckState = CheckState.Checked;
- break;
- case"False":
- e.CheckState = CheckState.Unchecked;
- break;
- case"Yes":
- gotocase"True";
- case"No":
- gotocase"False";
- case"1":
- gotocase"True";
- case"0":
- gotocase"False";
- default:
- e.CheckState = CheckState.Checked;
- break;
- }
- e.Handled = true;
- }
對於新加的列,研究了半天沒有什么可以實現的方法,不過最后通過改變Sql語句實現了,不如"select '1' as 新列1 from table1 " 這樣不就相當於綁定了嘛,所以說還是可以當綁定列來使用的.
至此,大功完成!就這么簡單...有余力的朋友,還可以再看看QueryValueByCheckState事件,它和我上面提的事件是一對的!呵呵
另外
GridControl如果要支持多選,設置Options->OptionSeletion->MultiSelet為true就ok。
|