[jQuery] 使 ASP.NET 的 DropDownList 支援選項分組(optgroup)

Standard

由於 ASP.NET 的 DropDownList 控制項不支援 optgroup 標籤,就無法做選項分組的功能 ..
後來想用 jQuery 實現此一功能,我寫成 plugin 了,可參考一下:

把這段 code 存成 optgroupTrans.js:

$.fn.optgroupTrans = function() {

        var items = $(this);
        var groupnames = [];
        for (var i = 0; i < items.length; i++) {

            if ($(items[i]).attr('optgroup') != null) {
                groupnames.push($(items[i]).attr('optgroup'));
            }
        }

        // groupnames = $.unique(groupnames);
        groupnames = uniqueArray(groupnames);
        for (var i = 0; i < groupnames.length; i++) {
            $("option[optgroup='" + groupnames[i] + "']").wrapAll("<optgroup label='" + groupnames[i] + "'>");
        }


    function uniqueArray(a){
        temp = new Array();
        for(var i = 0; i < a.length; i++){
            if (!contains(temp, a[i])){
                temp.length += 1;
                temp[temp.length - 1] = a[i];
            }
        }
        return temp;
    }
    function contains(a, e) {
        for (j = 0; j < a.length; j++) 
              if (a[j] == e) return true;
        return false;
    }

};

Continue reading

[ASP.NET] 計算兩時間扣除週末的時間差

Standard
    ''' <summary>
    ''' 兩個時間扣除週末(六日)的時間差有幾天
    ''' </summary>
    ''' <param name="dtst">開始時間</param>
    ''' <param name="dtend">結束時間</param>
    ''' <returns>幾天(Integer)</returns>
    ''' <remarks></remarks>
    Private Function DaysIgnoreWeekends(ByVal dtst As DateTime, ByVal dtend As DateTime) As Integer
        Dim days As TimeSpan = dtend.Subtract(dtst)
        Dim count As Integer = 0

        For a As Integer = 0 To days.Days
            If dtst.DayOfWeek <> DayOfWeek.Saturday AndAlso dtst.DayOfWeek <> DayOfWeek.Sunday Then
                count += 1
            End If
            dtst = dtst.AddDays(1.0)
        Next

        Return count
    End Function

原始出處: (C#版本)
http://www.daniweb.com/forums/thread241280.html

[AS3] 擷取 Flash 畫面上的某一區塊為圖檔 (C#/PHP)

Standard

這次來幫一個常用的功能需求做一下作法筆記,就是「擷取 Flash 畫面上的某一區塊為圖檔」。

使用 ActionScript 3.0,後端程式本例做了兩種版本 PHP 與 C#.Net。

  1. 如範例檔,在畫面上安排兩個元件,用來放置欲擷取區塊的 previewMC,以及擷取鈕 capture_btn。

Continue reading

[Flash] 在 Flash 中 load 來自 http://profile.ak.fbcdn.net/ 的使用者圖片會報 checkPolicyFile 錯誤的解法

Standard

在製作放置於外部的 Flash Game 時,有利用到 Facebook Graph API 去撈使用者的顯示圖片(https://graph.facebook.com/使用者UID/picture,會回傳位於 http://profile.ak.fbcdn.net/ 的圖片網址),但由於 Flash 中的安全性設置,若有裝 Flash Player Debug 版,就會跳出這樣的錯誤訊息

需要指定原則檔,但是在載入媒體時,尚未指定 checkPolicyFile 指標。

Google 了一下,找到了這篇 Blog,依照其中的 code:

Continue reading

[ASP.NET][ASP] 傳遞登入狀態

Standard

需求是這樣的,ASP.NET 的網站登入(Session)後,點選其他 ASP 的網站,也要變成登入狀態。

搜尋過有幾種作法:

  1. 透過資料庫,存入 Session_id 供查閱。
  2. 透過 ASP.NET2ASP POST 的方法,但要注意安全性。
  3. 將帳號加密,用 GET 方式附帶在 .asp 網址後方,ASP 端使用該加密字串丟到 ASP.NET 的 Web Service 解密並查詢該帳號是否正確,若正確則傳回 true,ASP 再設定 Session 登入狀態。

Continue reading

[ASP.NET] Flash 圖表解決方案 amchart

Standard

最近有個案子希望用上花俏的圖表效果,最好還會動的。

曾經找過 jQuery 的方案 Horizontal Bar Graph in jQuery,也有動態生長效果,但沒有立體;還有另一套也滿有名的 Open Flash Chart,但在 ASP.NET 中使用的方法不是拖拉元件、指定對應屬性那麼直觀,還沒空仔細研究,就先跳過了。

最後覺得在 ASP.NET 環境下,用 amchart 這套圖表元件相當適合,也滿簡單的。屬性與方法相當多,以下只簡單介紹一下用法。

Continue reading

[ASP.NET] 在文字框中按下 Enter 指定按下某顆送出鈕

Standard

在作專案的時候遇到的問題。當我在某文字框按下 Enter 要做送出時,卻不是送出該文字框對應的送出鈕(文字框控制項有對應的送出鈕的屬性嗎?好像沒看到…)。

網上有些作法是 Code Behind 中將該文字框加上 Enter 的 keycode 偵測,再 return false; ,使送出失效,但不是很好的作法,對使用者不是很友善哩。再找了一下,以下這種方法就能對應想要的送出鈕了。

對了,這種方法也可以通用於加上 UpdatePanel 的頁面,不會只有第一次有效。

txtSearch.Attributes.Add("onkeydown", "if (event.keyCode==13) { document.getElementById('" + btnSearch.ClientID + "').focus();return true; }")

註:txtSearch 是文字框控制項 ID,而 btnSearch 是送出鈕控制項。

出處:http://forums.asp.net/p/1121832/1757434.aspx

[ASP.NET][VB] DataList 水平橫向排列,加上水平分隔線的做法

Standard

需求:

資料一 資料二

我是分隔線我是分隔線我是分隔線

資料三 資料四

我是分隔線我是分隔線我是分隔線

說明:

DataList 做為自動判斷折行排列的資料呈現相當方便,

但詭異之處是設為水平橫向排列後,其分隔 (Separator) 是長在

每筆資料的右方

資料一(SP) 資料二(SP)
資料三(SP) 資料四(SP)

而並非我原先預想的,會長在每個水平分隔上。
看來只能用 Code 自己寫囉,做法如下:

在 DataList 的 ItemDataBound 事件中加入:

[code language=”VB”]
If (e.Item.ItemIndex Mod 2 = 1) Then ‘因為我是 2 個一折行

Dim sp As New Literal
sp.Text = "</td><tr><td colspan=’2’>This is a hr line !!!!!!!!!</td></tr><tr><td colspan=2>"
e.Item.Controls.Add(sp)

End If
[/code]

或許不是很漂亮的解法,總之先做個筆記了。