2014-06-11 3 views
1

Gridview 컨트롤이 있고 itemtemplate에 RadioButton을 배치했습니다. 버튼을 클릭하면 라디오 버튼의 체크 된 속성을 얻으려고합니다. 하지만 체크 된 속성을 클릭하면 항상 false가 반환됩니다. 아래 코드를 살펴보고 실수 한 부분을 알려주십시오.GridView의 RadioButtons 상태가 포스트 백 이후에 변경되지 않습니다.

영문 코드

<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

:

그래서이에 대한 Page_Load를 사용하는 가정? 모든 포스트 백이 아닌'if (! IsPostBack)'만 수행해야합니다. –

+0

데이터 소스 란 무엇입니까? 데이터가 데이터베이스에서오고 있습니까? –

+0

어디 foreach 문을 사용합니까? Page_Load 이벤트 또는 btn_Click? 그것은 Page_Load 내부에있는 경우 값은 항상 거짓이지만 btn_Click 메서드 안에 루프를 배치하면 IsPostBack 속성을 확인하지 않고 페이지로드에서 호출하지 않으면 잘 작동합니다. –

답변

1

당신이 GridViewDataSource을 할당하고로드 할 수 있습니까? 참고로 모든 게시물에 대해서만 if(!IsPostBack)을 사용해야합니다. 따라서 Page.IsPostBack property을 사용하십시오. 때 당신이 할당하고`GridView`의`DataSource`를로드 할

protected void Page_Load(Object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     DataBindGridView(); // method that assigns DataSource and calls DataBind 
    } 
} 
관련 문제