GridView單選+允許AutoPostback

雖然只是拼拼湊湊但還是做到了呢(搖尾)

先前做過RadioButton的單選,指要指定好GroupName就可以了,

我也跟許多大大們相同,以為在GridView 也只要指定GroupName就可以萬無一失了,

沒想到事情真的不如笨蛋所想的那樣啊!!!指定GroupName無法解決GridView內的RadioButton無法單選的問題,

最後我找到了一個解法http://jackchu0936.blogspot.tw/2012/07/gridview-radiobutton.html,

前台的部分很簡單,包UpdatePanel就可以了,但是後台卻是VB啊啊啊ORZ,

已經N百年沒看VB得我怎麼看得懂呢?所以我靠著線上語法轉換了一下,再去修改他:

        RadioButton tempRadioButton = new RadioButton();
        tempRadioButton = ((RadioButton)(sender));
        GridViewRow gvRow;
        gvRow = ((GridViewRow)(tempRadioButton.NamingContainer));
        if (gvRow != null)
        {
            int index = gvRow.RowIndex;
            for (int i = 0; i<= (GV_SPIDList.Rows.Count - 1); i++)
            {
                if (i != index)
                {
                    tempRadioButton = (RadioButton)(GV_SPIDList.Rows[i].FindControl("RadioButton1"));
                    if (tempRadioButton.Checked)
                    {
                        tempRadioButton.Checked = false;
                    }
                }
            }
        }     

前台包一下

<asp:UpdatePanel ID="UpdatePanel11" runat="server" >
    <ContentTemplate>
    這邊是GridView的程式碼
    </ContentTemplate> 
    </asp:UpdatePanel> 

喔喔喔~感覺好像可行對不對~實際去Run一下~結果我得到了SCriptManager不存在的錯誤訊息...

新手上路就是這樣,不撞一下怎麼可以QWQ?

於是又參考了這篇文章http://ithelp.ithome.com.tw/question/10126513

改成這樣:

<asp:PlaceHolder ID="PlaceHolder1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel11" runat="server" >
    <ContentTemplate>
    這邊是GridView的程式碼
    </ContentTemplate> 
    </asp:UpdatePanel> 

然後到updatepanel的init事件上增加下面的事件程式碼:

if(ScriptManager.GetCurrent(this.Page) == null)
{
  placeholder.Controls.Add(new ScriptManager());
}

搭啦~我們得到了一個GridView單選+允許AutoPostback的功能了(被毆)

雖然程式碼拼拼湊湊不是一件好事,要有所能力自己撰寫才是,但是初學者的時候,

連程式碼都拼湊不起來的話,我自己會覺得自己不如去賣小吃別寫程式了QWQ...

所以還是一步一步慢慢來吧~

 

Lanlith

只是個路過的新手,發文有誤請告知。