云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          ?

          現(xiàn)在有一個(gè)方便的做法來根據(jù)選擇Enable/Disable控件。比如:有一個(gè)DataGrid和數(shù)個(gè)操作數(shù)據(jù)的按鈕,當(dāng)選中某行是激活其中一個(gè)按鈕,選中另一行時(shí),激活其中另一個(gè)按鈕,等等。

          通常的做法是寫一大堆的if else語句,或者是設(shè)置一堆變量綁定到按鈕上,然后在代碼中設(shè)置這些變量的值,比如:

          [Bindable] private var somethingSelected:Boolean = false;
          <mx:Button label="Publish" click="publishItem()" enabled="{somethingSelected}" />

          這是一個(gè)有益的嘗試。所有的依賴于DataGrid狀態(tài)的控件都綁定一個(gè)變量。改變變量的值就改變控件的enabled狀態(tài)。但是你還需要確定改變變量值的時(shí)機(jī)。比如:

          private function publishItem() : void {
          ???? // get the selected item
          ???? // publish it
          ???? grid.selectedItem = -1; // clear the selection
          ???? somethingSelected = false;
          }

          在復(fù)雜的情況下,假設(shè)有另一個(gè)按鈕需要在選中某個(gè)特定值時(shí)被激活。那么你不僅需要考慮選中對(duì)應(yīng)的那個(gè)變量,還需要考慮其他按鈕的情況。也就是說,在publishItem函數(shù)中你還需要設(shè)置其他變量的值。

          一個(gè)更方便的做法是這樣的。現(xiàn)在我們Publish按鈕和somethingSelected變量進(jìn)行綁定。我們還需要做的是把somethingSelected變量與DataGrid的選中狀態(tài)進(jìn)行關(guān)聯(lián)。對(duì)此,我們可以使用<mx:Binding>標(biāo)簽。

          <mx:Binding source="grid.selectedIndex >= 0" destination="somethingSelected" />

          這樣somethingSelected的值與DataGrid的選中狀態(tài)就緊密地聯(lián)系起來了。當(dāng)選中了DataGrid中的某條數(shù)據(jù)時(shí),所有進(jìn)行enabled="{somethingSelected}"綁定的按鈕就被激活。<mx:Binding>標(biāo)簽的source屬性不需要一定是一個(gè)變量,完全可以是一個(gè)表達(dá)式。

          比如稍微復(fù)雜一點(diǎn)的一個(gè)例子:

          <mx:Binding source="grid.selectedItem.code == 1" destination="codeOnePicked" />

          這樣,當(dāng)DataGrid選中行的code字段的值為1時(shí),變量codeOnePicked的值被設(shè)置為true。
          mxml中可以如下定義:

          <mx:CheckBox label="Code One?" selected="{codeOnePicked}" />
          <mx:Button label="Publish" enabled="{somethingSelected && !codeOnePicked}" />

          這樣,當(dāng)選中行的code字段值為1時(shí),上面的復(fù)選框被激活,而下面的按鈕無效。



          主站蜘蛛池模板: 义马市| 陕西省| 永靖县| 当阳市| 石门县| 呼图壁县| 合作市| 顺义区| 京山县| 简阳市| 辽宁省| 南汇区| 德安县| 云霄县| 青田县| 普兰店市| 桐乡市| 德惠市| 乌鲁木齐市| 如东县| 龙岩市| 涿鹿县| 崇信县| 舟曲县| 泌阳县| 肃北| 彭州市| 彰武县| 竹山县| 宣武区| 柘城县| 洛川县| 泗阳县| 丹棱县| 芜湖市| 西华县| 英山县| 小金县| 渭南市| 察隅县| 宽甸|