2009年2月27日 星期五

ComponentArt如何編輯Grid後選取Checkbox

最近在公司實作ComponentArt Grid時,由於資料是可以編輯,

並且Grid中的checkbox要能夠隨著編輯的內容能夠選取起來,老實說,這的確是個艱難的任務。

大家都知道,文件如果不足,範例又不夠,要實作時往往事倍功半,

並且 Javascript 要除錯時又特別的困難,當某個物件不是自己所寫的,

要知道這個物件所擁有的屬性有哪些是一件非常麻煩的事,

好在最近在 Mozilla Developer Center 找到一個非常有用的function能夠幫助我們了解物件的屬性,

詳情可以查看 Displaying Show Event properties 這個example,或是點我下載


由於之前的文章已經說過如何在 client-side 編輯時判斷是否合法,
詳情請參閱「ComponentArt的FlexGrid原件如何在 Client 端判斷邏輯」。

這次我在第一欄位設定為核取方塊(checkbox),我只多加了一行script就可以達到我要的功能。

詳情請看下例:


function verify(OldItem,NewItem)
{
try{
var txt = new RegExp("^[0-9]*\.?[0-9]*$");
if(!txt.test(newItem.GetMember('Close').Value))    //Cells與Value的第一個字均為大寫
{
alert(newItem.GetMember('Name').Value+"所輸入的數字格式錯誤,請重新輸入");
return false;
}
newItem.SetValue(0, true, false);
return true;
}catch(e){
alert(e.description);
return false;
}
}


SetValue的函數請參閱以下內容:


function(colNumber, value, bDontPersist) {
this.Data[colNumber] = value;
this.Table.LoadRowData(this, this.Data);
if (!bDontPersist) {
var sRowXml = this.Table.Grid.ArrayToXml(this.Data, true);
this.Table.Grid.RecordEvent("UPDATE " + this.Level + " " + sRowXml);
this.Table.Grid.SaveData();
}
}

經由上面語法可以得知,第一個欄位是要設定的欄位索引值,第二個欄位則是你所要設定的值,
而第三個則是會影響到你所要儲存的資料是否要儲存到ComponentArt所使用的XML,其所能設定的值為布林型態。

沒有留言:

張貼留言