2014-06-11 37 views
1

我有一個Gridview控件,並且我在項目模板中放置了一個RadioButton。當我點擊一個按鈕時,我試圖獲取單選按鈕的選中屬性。但是當我點擊選中的屬性總是返回false。請查看下面的代碼,並讓我知道我犯了什麼錯誤。GridView中RadioButtons的檢查狀態在回發後不會改變

ASPX代碼

<asp:GridView ID="gvDepartments" runat="server" AutoGenerateColumns="False" GridLines="None"AllowPaging="true" CssClass="mGrid" PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt"> 
     <Columns> 
     <asp:TemplateField> 
     <ItemTemplate> 
       <asp:RadioButton ID="rdbtn" runat="server" /> 
     </ItemTemplate> 
     </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
<asp:Label ID="lbl" runat="server"></asp:Label> 
<asp:Button ID="btn" runat="server" Text="Save" OnClick="btn_Click" CssClass="button small"/> 

代碼隱藏按鈕點擊

foreach (GridViewRow row in gvDepartments.Rows) 
{ 
    if (row.RowType == DataControlRowType.DataRow) 
    { 
     RadioButton rd = (RadioButton)row.FindControl("rdbtn"); 
     lbl.Text += rd.Checked.ToString();// +rd1.Checked.ToString(); 
    } 
} 

結果將是假始終顯示在標籤始終。我在應用程序中使用Ajaxcontroltoolkit,上面的控件出現在更新面板中,我甚至試圖將按鈕和事件放在觸發器中,但結果是一樣的。請幫忙。

問候,
Nuthan A R

+3

你什麼時候分配並加載'GridView'的'DataSource'?請注意,你應該只做'if(!IsPostBack)'而不是每次回發。 –

+0

什麼是數據源,數據來自數據庫? –

+0

你在哪裏使用foreach語句?你的Page_Load事件或btn_Click內?如果它在Page_Load中,則值始終爲false,但如果將循環放置在btn_Click方法內,則它應該可以正常工作,除非您從頁面加載調用它而不檢查IsPostBack屬性 –

回答

1

你什麼時候分配並加載GridViewDataSource?請注意,您應該只使用if(!IsPostBack),而不是在每次回傳中。所以使用Page.IsPostBack property

所以假設你使用這個Page_Load

protected void Page_Load(Object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     DataBindGridView(); // method that assigns DataSource and calls DataBind 
    } 
} 
相關問題