2011-12-14 3 views
5

Ho cercato di farlo da ieri ma non riesco a pensare a una soluzione. Ho un ripetitore contenente una casella di controllo e un fileupload, questo ripetitore si ripete numerose volte a seconda del contenuto della mia tabella. Quando la casella di controllo sotto il caricamento del file è selezionata, non dovrebbe controllare il fileupload. Non riesco a pensare a un modo per farlo. Qualche idea? Ecco il codice.Utilizzare la casella di controllo all'interno di un controllo ripetitore

La classe:

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

La vista:

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

Come u può vedere il suo solo un problema logiche ... Qualcuno mi può dare un esempio su come risolvere questo problema?

+0

Provare l'impostazione 'EnableViewState =" true "' per il controllo CheckBox – sll

+0

così la casella di controllo controlla ogni upload alrdy? oO –

+0

testato, non ha funzionato :( –

risposta

3

Si tratta probabilmente di elementi vincolanti per il ripetitore durante il caricamento della pagina. Stai cercando PostBack?

Quello che penso stia accadendo è che quando si fa clic sul pulsante la pagina viene ricaricata e il ripetitore viene riempito con i dati, sovrascrivendo le scelte della casella di controllo che hai fatto. Basta fare in modo di fare qualcosa di simile nel tuo caricamento della pagina:

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

Ora, quando si leggono gli articoli ripetitore dopo che il pulsante si fa clic dovrebbe vedere il valore effettivo delle caselle di controllo invece di essere sempre false.

+0

Caro signor Buurman, sei il mio eroe! xD tenuto: p –