2012-07-27 2 views
0

이 코드를 사용하여 내부에 체크 박스가있는 gridview를 만들었습니다.Gridview의 내 체크 박스가 이벤트를 트리거하지 않습니다.

<asp:GridView ID="GridView1" runat="server" Width="366px" autogeneratecolumn="false"> 
     <Columns> 
      <asp:TemplateField> 
       <HeaderTemplate> 
        <asp:CheckBox ID="SelectAllCheckBox" runat="server" AutoPostBack="true" oncheckedchanged="SelectAllCheckBox_OnCheckedChanged" /> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <asp:CheckBox ID="EachCheckBox" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

시도해 보았습니다. enter link description here

protected void SelectAllCheckBox_OnCheckedChanged(object sender, EventArgs e) 
    { 
     String test = "test"; 
     test = "newtest"; 
     GridView1.DataSource = null; 
     GridView1.DataBind(); 
    } 

그러나 어떤 이벤트를 트리거하지 않습니다. enter link description here

내 코드가 누락되어 있지만 지금까지 검색 한 곳을 찾으려고하지만 여전히 할 수 없습니다.

도움 주셔서 감사합니다.

+0

귀하의 코드가 정상이 나를 위해 일했다. 'GridView1'을 채우는 방식을 게시 할 수 있습니까? 모든 포스트 백에서 다시 채워지면'CheckedChanged' 이벤트가 처리되지 않습니다. – Andrei

답변

0

당신은 OnItemCreated 또는 OnItemDataBound를 사용하고 위임

void Item_Created(Object sender, DataGridItemEventArgs e) 
    { 

     CheckBox cbx = (CheckBox)e.Item.FindControl("SelectAllCheckBox"); 
     cbx.CheckedChanged += SelectAllCheckBox_OnCheckedChanged; 

    } 
0

코드가 잘 보이는 나를 위해 작동하여 체크 박스를 연결해야합니다.

모든 포스트 백에서 GridView를 바인딩하고있는 것으로 의심됩니다.

이벤트가 첨부 된 CheckBox를 클릭하면 페이지가 새로 고침됩니다. CheckBox를 Page_Load (또는 서버로 이동할 때마다 발생하는 모든 메서드)에 바인딩하면 CheckBox를 클릭 할 때마다 표가 바인딩됩니다. 이 경우 행사를 해고하는 일은 결코 없을 것입니다.

그렇다면 GridView를 바인딩하기 전에 다시 게시를 확인하십시오. 예를 들어

:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Gridview1.DataSource = myDataSource; 
     GridView1.DataBind(); 
    } 
} 
관련 문제