2020年2月14日 星期五

[Asp.Net]CheckBoxList的應用


在存取 CheckBoxList 時,發現不是只用 SelectedIndexChanged 取的SelectedValue
就好,因為它有[覆選。

不能當做RadioButtonList 用
 
本來是想找找看有沒有checked 這樣的東西,看來是沒有
突然靈光一閃,應該是所有的選項 都要掃一遍。

所以重新整理如下:

    private void chk_SelectedIndexChanged(object sender, EventArgs e)
    {
        CheckBoxList chk = (CheckBoxList)sender;
        string bank_id = chk.ID;

        //刪除所有存檔的資料       
        Transcript.Row_Del(string.Format(" bank_id = '{0}' ", bank_id));  

        foreach (ListItem s in chk.Items)
        {
            if (s.Selected)  //s.Selected 就是html 的checked 用在這裡
            { //新增 
                add_transcript(bank_id, s.Value, "m");
            } 
        } 
    }

2020年2月13日 星期四

[ASP.NET]在UpdatePanel中 動態產生Trigger

常常在網頁中 動能新增event 
但遇上UpdatePanel 是一個困擾

當我動態新增Trigger,系統只會作用一次
後來參考ASP.net,C#,在UpdatePanel中動態加入Trigger
原來是因為Trigger掉了

所以重新將Trigger加入 PageLoad 即可

if (this.ScriptManager1.IsInAsyncPostBack)
{
            UpdatePanel1.GetType().GetMethod("Initialize", BindingFlags.NonPublic |              BindingFlags.Instance).Invoke(UpdatePanel1, null);
}


//==========================================================
範列

AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
           
                    CheckBoxList chk = new CheckBoxList();
                    chk.ID = ds["rowno"].ToString();
                    chk.RepeatDirection = RepeatDirection.Horizontal;
                    chk.AutoPostBack = true;
                    chk.SelectedIndexChanged += new EventHandler(chk_SelectedIndexChanged);

                    trigger.ControlID = chk.ID; //要偵測的物件ID
                    trigger.EventName = "SelectedIndexChanged"; //Button的觸發事件為Click
                    up_list.Triggers.Add(trigger); //UpdatePanel

                    string[] itmes = item.Split('|');
                    int i = 0;
                    foreach (string s in itmes)
                    {
                        string[] o = s.Split(',');
                        ListItem litem = new ListItem(o[0], o[1]);

                        if (i == 0)
                        {
                            litem.Selected = true;
                        }

                        if (getSelected(ds["rowno"].ToString(), o[1]))
                        {
                            litem.Selected = true;
                        }


                        chk.Items.Add(litem);

                        i++;
                    }

                    td2.Controls.Add(chk); //Panel

    p_list.Controls.Add(td2); //Panel