2012-02-16 35 views
0

這個問題似乎很簡單,但它給我造成了問題。我有一個dataGrid有兩個dataFields:peerID,名稱。當新用戶加入羣組時,網格中的信息會動態更新(我正在創建聊天)。我需要關於用戶在斷開連接後從網格中刪除的信息。Flex,如何比較dataGrid dataField中的數據與字符串值?

因此,在「NetGroup.Neighbor.Disconnect」:事件我想比較「event.info.peerID」值與網格中的所有peerID值並刪除有關斷開用戶的信息。

我試圖用下一個建設:

for (var i:uint, len:uint = txtDataArray.length; i < len; i++) 
         { 
         if (txtDataArray.source[i] == event.info.peerID) 
         { 
          txtDataArray.removeItemAt(i); 
         break; 
         } 
          } 



<s:DataGrid id="txtData" x="11" y="59" width="238" height="164" alternatingRowColors="[ #67676767, #555555]" borderVisible="true" chromeColor="#555555" color="#CCCCCC" contentBackgroundColor="#555555" dataProvider="{callerns}" fontWeight="bold" requestedRowCount="4" rollOverColor="#08700D" selectionColor="#08700D" symbolColor="#CCCCCC"> 
     <s:columns> 
      <s:ArrayList id="txtDataArray"> 
       <s:GridColumn dataField="name" headerText="USERS ONLINE"></s:GridColumn> 
       <s:GridColumn dataField="peerID" headerText="USER ID" visible="true"></s:GridColumn> 
      </s:ArrayList> 
     </s:columns> 
    </s:DataGrid> 

不過,這並不在所有的工作!

我注意到構造txtDataArray.source [i](或txtDataArray.getItemAt(i))返回了[object GridColumn] insead的值。所以,我有兩個問題: 1)如何獲得準確細胞的價值? 2)如何在用戶斷開後組織信息刪除?

預先感謝您!

回答

0

你爲什麼使用txtDataArray.source[i]
你可以這樣寫:

for (var i:int; i < callerns.length; i++) 
    { 
     if (callerns[i].peerID == event.info.peerID) 
     { 
      callerns.removeItemAt(i); 
      break; 
     } 
    } 

或使用for each如果你想。
順便說一句,我喜歡你的數據網格的風格。

+0

非常感謝!我花了半天的時間來解決這個簡單的問題!你節省了很多時間。完成整個聊天功能似乎比解決這個小問題更容易。我正在使用同樣的方式進行整個聊天,並將其作爲來自不同大學的學生的交流工具。您可能會在這裏看到Beta版本:http://www.koondoo.com/index.php/chat。這不是100%完成,但主要功能是工作。再次感謝你! – Zhekka 2012-02-20 12:36:29