2011年7月18日 星期一

轉貼 google app engine enhancer error 解決方式

原因可能是google 沒有將一些class enhancer 起來, 不過搜尋後找到一個解法 就是


設定 eclipse 的 ORM 的 path(Project Settings -> Google -> App Engine -> ORM) , 手動引用使用到的class


如圖:
















2011年7月5日 星期二

心得 Google app engine deletePersistentAll

JDO 中,可以利用 deletePersistentAll 來刪除符合條件的資料


例如.

javax.jdo.Query query = pm.newQuery(Person.class);
query.setFilter("height > 100");
query.deletePersistentAll();




不過若因為符合資料太多 則會造成 java.lang.OutOfMemoryError: Java heap space 的錯誤(heap 空間不夠),

可以考慮其他方式, 因為 google app enigne 的查詢只允許 1 個範圍的過濾查詢[2], 目前想到的方式是用order 後 取出前幾位,之後在將每個屬性判斷否符合條件在刪除, 用起來還真不方便....







參考

2011年7月4日 星期一

心得 jquery 動態新增欄位

參考以下的來源 利用 jquery 達成動態的新增移除 text欄位





以下是 code:






<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Test Jquery dyamic</title>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery", "1.4.4");



function AddItem() {

document.getElementById('newitems').innerHTML +=

"<div class=\"rowElem\" >"+
"<label> ITEM ID: </label>"+
"<input name=\"serid\" id=\"serid\" type=\"text\" maxlength=\"11\"/>"+
"<input type=\"button\" value=\"add\" onclick=\"AddItem()\" /> "+
"<input type=\"button\" value=\"delete\" onclick=\"DeleteItem()\"/>"+
"</div>";



// 先抓到是哪一個 tr
var sids= $('input:button', '#reg');

if(sids.length<4){
var _count= sids.length-3;
sids.eq(_count).hide();
}
else{
var _count= sids.length-3;
sids.eq(_count-1).hide();
sids.eq(_count).hide();
}


}


function DeleteItem() {

// 先抓到是哪一個 tr
var txts= $('input:text', '#reg');

var _count= txts.length-1;
// 移除它
var rownow = txts.eq(_count).parent();
rownow.remove();




// BTN 顯示先前的
var btns= $('input:button', '#reg');

var _bcount= btns.length-1;
if(_bcount==0){
btns.eq(_bcount).show();
}
else{
btns.eq(_bcount-1).show();
btns.eq(_bcount).show();
}

}

function check(){

var txts= $('input:text', '#reg');
var _count= txts.length;
var _str ="";
for (var i=0;i< _count; i++){
_str = _str +i + ": " + txts.eq(i).val()+" ";
}

alert(_str);
}




</script>
</head>
<body>


<div id ="fromBody" >
<form id ="reg" method="post" action="#" ">


<div class="rowElem">
<label> ITEM ID: </label>
<input name="serid" id="serid" type="text" maxlength="11"/>
<input type="button" id="additem" value="add" onclick="AddItem()" />
</div>

<div id = "newitems">

</div>

<div class="rowElem">
<input type="submit" value="Send" onclick="check()"/>
</div>

</form>


</body>
</html>










注意 落利用他的jquery plugin 要注意 DOM的資料結構會變動,如圖使用 jqTransform






2011年6月30日 星期四

轉貼 ASP.net URL Rewrite


只要 修改 web.config  在 system.web 下增加以下的設定, 此範例是將 輸入 ReURL  的位址取代 test.aspx



<system.web>
<urlMappings enabled="true">
<add url="~/ReURL" mappedUrl="~/test.aspx"/>
</urlMappings>
</system.web>





參考:


2011年6月28日 星期二

轉貼, ie 下 window.open 自動關閉

應該是 IE 的安全性的關係,在 FireFox 下狀況是正常, 開啟後會自動關閉, 我是在設定新視窗是MS word format 格式下發生的。


我測試的例子是開啟 新視窗 MS word format,這個方式 ie8 會出現 封鎖警告訊息,按下載就可以將 word 檔下載,達成我想要得結果。



code:



function openNewWindow()
{
window.open('TEST.html', '_self' );

}


附註:
原本的預想流程, 網頁上有一連結可以開新視窗->以word 格式瀏覽,原頁面和新視窗產生的文件都存在瀏覽器上。
現在流程,按下連結後 下載檔案,不過 chrome 或 FF 下載完要改副檔名,下完是.aspx 檔,改成doc 就可以達到效果了。 遇到情況是 我是用asp.net 來作伺服器的。