2011-12-14 17 views
5

Tôi đã cố gắng làm điều này từ hôm qua nhưng không thể nghĩ ra giải pháp. Tôi có một repeater có chứa một hộp kiểm và một tập tin tải lên, lặp lại này lặp đi lặp lại nhiều lần tùy thuộc vào nội dung của bảng của tôi. Khi hộp kiểm bên dưới tệp tải lên được chọn, bạn không nên kiểm tra tệp tải lên. Tôi không thể nghĩ ra cách nào để làm điều này. Bất kỳ ý tưởng? Heres mã.Sử dụng hộp kiểm bên trong bộ điều khiển lặp lại

Lớp:

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;     
     } 
} 

Quan điểm:

<!-- 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> 

Như u có thể nhìn thấy chỉ là một vấn đề logic của nó ... bất cứ ai có thể cho tôi một ví dụ về cách giải quyết này?

+0

Hãy thử đặt 'EnableViewState =" true "' cho kiểm soát hộp kiểm – sll

+0

do đó hộp kiểm kiểm soát mọi tệp tải lên chưa? oO –

+0

thử nghiệm, không hoạt động: ( –

Trả lời

3

Có thể bạn đang gắn các mục vào bộ lặp trong quá trình tải trang. Bạn đang kiểm tra PostBack?

Điều tôi nghĩ đang xảy ra là khi bạn nhấp vào nút trang được tải lại và bộ lặp được lấp đầy dữ liệu của bạn, ghi đè các lựa chọn hộp kiểm bạn đã thực hiện. Chỉ cần chắc chắn rằng bạn làm điều gì đó như thế này trong tải trang của bạn:

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

Bây giờ khi bạn đọc ra các mục lặp lại sau khi nút bấm bạn sẽ thấy giá trị thực tế của các hộp kiểm bên thay vì nó luôn luôn là sai.

+0

Thưa ông Buurman Bạn là anh hùng của tôi! xD được tổ chức: p –

Các vấn đề liên quan