2015年9月15日 星期二

[JQuery]取得當下DropDownList選取的值(不需Postback)

$('#CountyDDL option:selected').val();
↑這方法想取得選取後的值, 必須要Postback
這不是我想要的

如果想隨時切換, 請愛用this (radio button也適用)
   <script type="text/javascript">
            $(document).ready(function () {
                var index = $("#FormView1_Label").text() - 1; //利用此變數, 控制顯示的時期
                if (index == -1) index = 0;
                    $("#FormView1_Caption").text(index);
                $("#FormView1_TextBox").change(function () {
                    index = $(this).val()-1; //此處使用「$(this).val()」是重點。「-1」單純是運算需要
                    $("#FormView1_Caption").text(index);
                });
            })

2015年9月14日 星期一

[W7]開啟新注音輸入法中隱藏的缺字

遇到一位友人想要在新注音輸入「雫」
由於不確定新注音的讀音,於是用「輸入法整合器」去查詢拼法

OK, 確認是「ㄋㄚˇ」... 但是照拼音卻找不到字,這時能確定新注音中有,只是要去哪開啟!

開啟罕見字的方法

  • 語言列上右鍵→點「設定值」
  • 選好「新注音」→再點「內容」



  • 在「一般」的頁籤下方,接近底部有個「字元集設定」


  • 將最後一列「允許使用中文標準交換碼全字庫 (CNS11643)所定義的字根輸入」勾選後點確定就完成了




如果有很特殊的需求,可以把能打勾的都勾一勾,就有更多罕見字可以使用
而且會很貼心的用顏色提醒

2015年9月6日 星期日

[ASP.NET]利用各列的button取得該列的其他參數

「當點下該列的button控制項後, 可以取得第一欄的值(未轉換成template field)」

要做這效果, 分為兩大項
  1. 取得該button所在的Row或取得Row Index
  2. 取得該Row的各Cell資料
1. 利用「Click」事件取得該Button所在Row
 protected void Button1_Click(object sender, System.EventArgs e)
    {
        //Get the button that raised the event
        Button btn (Button)sender;

        //Get the row that contains this button
        GridViewRow gvr =(GridViewRow)btn.NamingContainer;
    } 

重點在於先sender轉型成button, 在利用.NamingContainer實作該row
如果想要取得Row Index, 則用「int rowindex = gvr.RowIndex;」

2.取得該Row中的指定Cell資料
單純文字: gvr.Cells[0].Text;
使用Template的特定控制項:gvr.FindControl("Button1");


可用的方法還挺多的(這裡此論CodeBehind), 上面是最簡單的方法
以下就來作補充說明
資料來源:Get GridView RowIndex upon button click

除了用「Click」事件外另外有「Command」及「SelectedIndexChange」這兩種常用的事件
取得方法都不太一樣
「Command」事件(適合用在性質相似但功能略有不同的控制項)
這是先取得Row Index, 再取得Row
要使用這事件,必須要在html中設定「CommandName」及「CommandArgument」

  • CommandName:隨喜好設定
  • CommandArgument:<%# Container.DataItemIndex %>

接下來到*.cs中轉寫function
protected void Expo_Command(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
    {
        if (e.CommandName == "forCSR")
        {
            //Get rowindex
            int rowindex =Convert.ToInt32(e.CommandArgument);
            //Get Row
            GridViewRow gvr = GridView1.Rows[rowindex];
        }
    }

「SelectedIndexChange」事件
不外乎是使用「.NamingContainer」
DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {

        //Get the dropdownlist that raised the event
        DropDownList ddl = (DropDownList)sender;

        //Get the row that contains this dropdown
        GridViewRow gvr = (GridViewRow)ddl.NamingContainer;

        //Get rowindex
        int rowindex = gvr.RowIndex;
    }  



延伸閱讀:
Q:「RowIndex」和「DataItemIndex」有什麼差別?
A:都可以用來取得GridView中的index
差別在於RowIndex是每頁分開算(一律從 0 ~ n 的相對index)
而DataItemIndex則是位於Binding中的絕對index
資料來源:What is difference between RowIndex and DataItemIndex?

NamingContainer取得 GridView的列數(RowIndex)、對應的資料表 這一列的主索引鍵
GridView RowCommand 事件