2011-12-14 2 views
5

어제부터 이것을 해보려고했지만 해결책은 생각할 수 없습니다. 체크 박스와 파일 업로드가 포함 된 리피터가 있는데이 리피터는 테이블의 내용에 따라 여러 번 반복됩니다. 파일 업로드 아래의 확인란을 선택하면 파일 업로드를 확인하지 않아야합니다. 나는 이것을 할 어떤 방법을 생각할 수 없다. 어떤 아이디어? 코드를 heres.리피터 컨트롤 내의 체크 박스 사용하기

클래스 :

protected void UploadButton_Click(object sender, EventArgs e) 
{ 
    String savePath = @"~/files/"; 
    try 
    { 
     foreach (RepeaterItem item in rptVrijstellingen.Items) 
     {    
      FileUpload file=(FileUpload)item.FindControl("FileUpload1"); 
      HiddenField uid = (HiddenField)item.FindControl("hiddenid"); 
      CheckBox ch = (CheckBox)item.FindControl("CBupload"); 
      if(ch.Checked) 
       Response.Write("checked"); 
      else 
      { 
       if (file.HasFile) 
       { 
        String fileName = file.FileName; 
        savePath += fileName; 
        file.SaveAs(Server.MapPath(savePath + fileName)); 
        tblBijlage s = new tblBijlage(); 
        s.bijlageTitel = fileName; 
        s.bijlageURL = savePath; 
        s.bijlageType = "1"; 
        s.fk_externvakID = Convert.ToInt16(uid.Value); 
        BLLstudent.insertFile(s); 
       } 
       else 
        throw new Exception("Gelieve bij alle vakken een file toe te voegen of gegeven aan mevrouw Van Orlé aan te vinken en een afspraak te maken."); 
      } 
      Response.Redirect("s_student_Ovrijstellingen.aspx"); 
      } 
     } 
     catch (Exception ex) 
     { 
      UploadStatusLabel.Text = ex.Message;     
     } 
} 

뷰 : 유는 단지 논리 문제를 볼 수있는

<!-- language: xml --> 
<asp:Repeater ID="rptVrijstellingen" runat="server"> 
    <HeaderTemplate></HeaderTemplate> 
    <ItemTemplate> 
     <h2><%# Eval("tblExternVak.ExternvakNaam") %></h2> 
     <asp:HiddenField ID="hiddenid" Value='<%# Eval("tblExternVak.pk_externvakID") %>' runat="server" />  
     <h4>Selecteer een bestand om te uploaden:</h4> 
     Gelieve het bestand de naam te geven van het overeenkomstige vak om de verwerking vlot te laten verlopen. 
     <br /><br /> <br /> 
     <asp:FileUpload id="FileUpload1" runat="server"></asp:FileUpload> 
     <br /> 
     <asp:CheckBox id="CBupload" runat="server" /><asp:Label id="lblUpload" runat="server"> Geleverd aan Mevrouw Van Orlé</asp:Label> 
     <hr /> 
    </ItemTemplate> 
    <SeparatorTemplate><hr /></SeparatorTemplate> 
</asp:Repeater> 
<asp:Label id="UploadStatusLabel" runat="server" ForeColor="Red"></asp:Label> 
<br /><br /> 
<asp:Button id="UploadButton" Text="volgende > " OnClick="UploadButton_Click" runat="server"></asp:Button> 

가 ... 누군가가 나에게이 문제를 해결하는 방법에 대한 예를 들어 줄 수 있습니까?

+0

CheckBox 컨트롤 – sll

+0

에 대해 EnableViewState = "true"를 설정해보십시오. 그러면 모든 업로드 알디가 확인란을 제어합니까? o –

+0

테스트를 거쳤으나 작동하지 않음 : ( –

답변

3

아마도 페이지로드 중에 리피터에 항목을 바인딩하고있을 것입니다. 포스트 백을 확인하고 있습니까?

내가 생각할 때 버튼을 클릭하면 페이지가 다시로드되고 리피터가 사용자의 데이터로 가득 차게되어 선택한 체크 박스 선택 사항을 덮어 쓰게됩니다. 그냥 당신이 당신의 페이지로드에서 이런 일을 할 수 있도록 :

if(!Page.IsPostBack) 
{ 
    //Fill repeater with items here 
} 

을 이제 버튼 후 리피터 항목을 읽을 때 항상 false가되는 대신 체크 박스의 실제 값을 볼 수 당신을 클릭합니다.

+0

친애하는 Mr Buurman 당신은 나의 영웅입니다! xD 개최 : p –

관련 문제