2012-08-07 2 views
0

VS2010asp.net 체크 박스는 메서드를 호출하지 않습니다.

안녕하세요, 데이터베이스에서 채워진 gridview가 포함 된 웹 페이지가 있습니다. 필드 중 하나가 선택란입니다. 내가 뭘하려고하면 확인란을 클릭하면 데이터베이스의 값을 업데이 트됩니다. 그러나 나는 gvSiteInfo_CheckBoxUpdate() 메서드에 중단 점이 있으며 절대로 도달하지 않습니다.

올바르게 작동하려면 올바른 방향을 알려 주시겠습니까? 웹에서 찾은 몇 가지 예가 내 것과 같이 설정되어있는 것처럼 보입니다.

다음은 내 마크 업의 축약 버전입니다.

다음

<asp:GridView ID="gvSiteInfo" runat="server" 
    AutoGenerateColumns="False" OnSorting="gvSiteInfo_Sorting" 
    AllowSorting="True"> 
    <AlternatingRowStyle BackColor="#DCDCDC" /> 
    <Columns> 
     <asp:BoundField DataField="prodHostHeader" HeaderText="Production Host Header" 
      SortExpression="prodHostHeader" /> 
     <asp:BoundField DataField="prodDirectory" HeaderText="Production Directory" 
      SortExpression="prodDirectory" /> 
     <asp:BoundField HeaderText="Active Issues" DataField="issueCount" 
      SortExpression="issueCount" /> 
     <asp:TemplateField HeaderText="Testing Complete" SortExpression="true"> 
      <ItemTemplate> 
       <asp:CheckBox ID="cbTestComplete" runat="server" CausesValidation="true" AutoPostBack="true" OnCheckedChanged="gvSiteInfo_CheckBoxUpdate" 
       Checked='<%# DataBinder.Eval(Container, "DataItem.testComplete").ToString().Equals("true") %>' /> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:CheckBox ID="cbTestComplete" runat="server" CausesValidation="true" AutoPostBack="true" OnCheckedChanged="gvSiteInfo_CheckBoxUpdate" 
        Checked='<%# DataBinder.Eval(Container, "DataItem.testComplete").ToString().Equals("true") %>' />    
      </EditItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
은 ------------

public void gvSiteInfo_CheckBoxUpdate(object sender, EventArgs e) 
{ 
     SiteDB dbAccess = new SiteDB(); 
     dbAccess.updateSiteInfo(); 
} 

이 --------------- EDIT를 호출해야하는 코드입니다 ----------------- 여기에 ------ ------------- UPDATE 내를 Page_Load 코드

protected void Page_Load(object sender, EventArgs e){ 
     SiteDB dataAccess = new SiteDB(); 
     dataAccess.SelectedConnectionString = "WISQL01"; 

     DataTable dt = dataAccess.getSiteInfo(); 

     gvSiteInfo.DataSource = dt; 
     gvSiteInfo.DataBind(); 
    } 

입니다 ----------------------

CausesValidation="true" to <asp:checkbox>

답변

1

GridView를 바인딩 할 때마다 매번 바인드 할 때 이벤트를 지울 수 있습니다.

당신은

if(! IsPostBack) 
{ 
    Bind(); 
} 

바인딩의이 동작을 채택 그리고 당신의 gridview 당신은 모든 게시에 그리드 내용 (데이터 소스에 그리드 바인딩) 다시 작성해야

+0

EnableViewState는 내 gridview에 대해 true로 설정되어 있으며 위의 내용을 보면 내 Page_Load 코드를 추가했으며 페이지가 다시로드 될 때마다 리 바인딩됩니다. – Mike

+0

마이크가 완벽하다고 생각하기 때문에 당신의 라이프 사이클을 조정해야만합니다. –

+0

감사합니다.하지만 내 인생주기를 조정하면 무슨 뜻인지 알지 못합니다. 변경할 필요가있는 gridview 또는 체크 상자 속성이 있습니까? – Mike

2

을 유지하기 위해 EnableViewState=true를 사용해야합니다. 확인란 셀은 동적으로 생성되므로 이벤트 핸들러가 적용 되려면 모든 포스트 백마다 다시 만들어야합니다.

+0

나는 모든 포스트 백을 리 바인딩한다고 생각합니다. 내 질문에 데이터를 바인딩하는 내 pageload 코드를 포함하도록 편집했습니다. – Mike

관련 문제