2011-12-14 36 views
5

我一直試圖做到這一點,因爲昨天,但不能想到一個解決方案。 我有一個包含複選框和文件上傳的中繼器,這個中繼器根據我的表格內容重複多次。當文件上傳下面的複選框被選中時,它不應該檢查文件上傳。我想不出有什麼辦法可以做到這一點。有任何想法嗎?繼承人的代碼。使用中繼器控制內的複選框

類:

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

嘗試設置'EnableViewState =「true」'CheckBox控件 – sll

+0

那麼複選框控制每個上傳alrdy? OO –

+0

已測試,沒有工作:( –

回答

3

您可能在頁面加載過程中將項目綁定到中繼器。你在檢查PostBack嗎?

我認爲正在發生的事情是,當您點擊按鈕時,頁面將被重新加載,並且中繼器會充滿您的數據,覆蓋您所做的複選框選項。只要確保你做這樣的事情在你的頁面加載:

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

現在,當你讀了按鈕後,中繼器項目單擊您應該看到的複選框的實際價值,而不是它始終是假的。

+0

尊敬的Buurman先生您是我的英雄! xD持有:p –