2011-12-14 16 views
5

He intentado hacer esto desde ayer, pero no puedo pensar en una solución. Tengo un repetidor que contiene una casilla de verificación y una carga de archivo, este repetidor se repite varias veces dependiendo del contenido de mi tabla. Cuando se marca la casilla debajo de la carga del archivo, no debe verificar la carga del archivo. No puedo pensar en ninguna forma de hacer esto. ¿Algunas ideas? Aquí está el código.Usando la casilla de verificación dentro de un control de repetidor

La clase:

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> 

Como u puede ver es sólo un problema de lógica ... ¿Puede alguien darme un ejemplo de cómo resolver esto?

+0

Pruebe la configuración 'EnableViewState =" true "' para el control CheckBox – sll

+0

, ¿la casilla de verificación controla cada archivo de carga? oO –

+0

probado, no funcionó :( –

Respuesta

3

Probablemente esté vinculando elementos al repetidor durante la Carga de página. ¿Estás buscando PostBack?

Lo que creo que está sucediendo es que cuando hace clic en el botón, la página se recarga y el repetidor se llena con sus datos, sobrescribiendo las opciones de casilla de verificación que ha realizado. Sólo asegúrese de hacer algo como esto en su carga de página:

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

Ahora, cuando usted lee los artículos de repetidor después de que haga clic en el botón debería ver el valor real de las casillas de verificación en lugar de estar siempre falsa.

+0

Estimado Sr. Buurman ¡Usted es mi héroe! xD celebrado: p –

Cuestiones relacionadas