感謝強者

今天工作很不順,幸好最後有強者加持,總算把大問題解決了!!
以後我也要像強者一樣,除了功力深厚還要多幫助其他有需要的同事~不過前提是自己也要加把勁,努力朝強者之路邁進,不然也沒什麼可以鼎力相助的ˇˍˇ≡

anyway,要再次感謝今日鼎力相助的仁兄,希望不要害你被老婆念太晚回家@"@

RD的辛酸

RD真的是地位低卻責任大,身為RD基本上業主多機車都會盡量滿足(業主說:加一支程式就好啦,RD:好T.T),最糟糕的是小RD通常幾乎無話事權,尤其是遇到強硬的PM,所以也只能乖乖照作,等到驗收前就會有下面的狀況出現:

主管:我非常同意業主的說法,架構搞成這樣太沒sense,連我都看不下去勒
PM:可是照著合約走啊!
主管:我才不管你什麼合約,這麼離譜的東西你敢交給人家
PM & RD:....
.......接下來的冗長會議,PM已經失去立場說話只能點頭稱是....當然也就沒人管RD...最後結果就是RD改到死


小妹覺得業主也不是都無理取鬧,意見當然是源自於需求,但是我真的很想請問PM,怎麼沒有和業主建立良好的溝通??如果只是照著合約依PM個人意思解讀,再對RD下達指令,那你當PM跟我當PM有差嗎????!!PM都不PM了嘛
說RD是Redo & Delay真是一點也不為過 <‵▽′>

父子視窗傳值

承前面一篇的民國年份之月曆開發,在點選完日期後當然要將日期傳回至本來的父視窗,這時就面臨傳值的問題,以下為透過javascript的2個小方法。
(假設父視窗叫做parent.aspx,用來放置小月曆的子視窗叫做child.aspx)

1.方法一
開啟方式:window.open
傳值方式:opener

開啟方式ex:window.open('child.aspx','月曆選取器','width=300,height=300')
傳值方式ex:opener.form1.SelectDay.value = day;
(form1是父視窗的form名稱,SelectDay是父視窗裡面的一個text input,day就是子視窗小月曆提供的值)


2.方法二
開啟方式:window.showModalDialog
傳值方式:window.dialogArguments.form1.SelectDay.value = day;

開啟方式ex:window.showModalDialog('child.aspx',window,'dialogWidth:300;dialogHeight:300;')
傳值方式ex:window.dialogArguments.form1.SelectDay.value = day;
(form1是父視窗的form名稱,SelectDay是父視窗裡面的一個text input,day就是子視窗小月曆提供的值)

[心得]
★上述2種方法都可,要注意的是方法二要能讓父子視窗互動的話,一定要在showModalDialog的第2個參數填上window
★之所以後來採用方法二,是為了讓視窗永遠focus在child.aspx並顯示為最上層,這樣使用者在開啟child.aspx視窗後,就不會有忘記視窗已開啟而誤以為網頁無法傳值的問題!

使用民國年的小月曆

一般的AJAX頂多透過更改當地文化之設定可以讓CalendarExtender顯示中文,但並未提供民國年份的Calendar,以下提供4個相關網址供大家參考。
http://epaper.blueshop.com.tw/board/show.asp?subcde=BRD200410280805412Y2&fumcde=FUM20041006161839LRJ&rplcnt=13

http://blog.miniasp.com/post/2007/12/04/I-Found-two-very-useful-Calendar-for-Taiwan.aspx

http://74.125.153.132/search?q=cache:W_fdFPRc6_cJ:www.dotblogs.com.tw/chhuang/archive/2008/03/18/1861.aspx+calendar+%E6%B0%91%E5%9C%8B+AJAX&cd=3&hl=zh-TW&ct=clnk&gl=tw

http://msdn.microsoft.com/zh-tw/library/cc464124(VS.71).aspx

我是使用Calendar並搭配DropdownList讓控制項更靈活,考量到重複使用其實是應該要作成「自訂控制項」。
以上是一點心得,如果有需要的話我再把程式碼放上來。

處理樣板欄位中的空值

使用諸如GridView之類的控制項,若binding之資料有空值,可以透過元件本身提供的NullDisplayText屬性來設定空值時要呈現的訊息。
一般來說,我們並不會滿足於使用基本的GridView,而是透過樣版的設計客製化符合業主的表格,但是樣板並不具備NullDisplayText屬性讓我們直接操控,這時候需要寫一點小程式來處理,說明如下。

假設樣板中有一Textbox1,其Text屬性是binding「金額」這個欄位 Eval("金額")<%# Eval("金額") %>,如果我們希望金額是零元的時候顯示「目前無存貨」的字樣,有金額時則改以錢字符號加上金額來顯示(例如$100),可以透過以下函示完成

Public Function GetReportsTo(reportsTo As Object) As String
 If reportsTo Is DBNull.Value Then
  Return "目前無存貨"
 Else
  Return "$" & CStr(reportsTo)
 End If
End Function


最後把Textbox1之Text屬性之binding改為GetReportsTo(Eval("金額"))即可!



【附上參考來源】
使用資料來源控制項處理 Null 資料庫值
http://msdn.microsoft.com/zh-tw/library/ms366709%28VS.80%29.aspx