2011-12-14 18 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> 

uはそのわずかロジックの問題を見ることができるように...誰も私にこの問題を解決する方法についての例を与えることができますか?

+0

CheckBoxコントロール – sll

+0

のための '' EnableViewState = "true" を設定試してみてくださいので、チェックボックスコントロールごとアップロードalrdyしていますか?オブジェクト指向 –

+0

は、didntの仕事を:(テスト –

答えて

3

おそらく、ページの読み込み時にリピーターにアイテムを結合しています。あなたはPostBackをチェックしていますか?私は何が起こっていると思う何

は、ボタンをクリックすると、ページがリロードされると、リピーターがあなたのデータで満たされます、あなたが作ったチェックボックスの選択を上書きすることです。ちょうどあなたがあなたのページの読み込み中にこのような何かを行うことを確認してください。

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

今、あなたはリピーターアイテムを読み出す際に、ボタンをクリックした後、あなたの代わりにそれのチェックボックスの実際の値は常にfalseているはずです。

+0

親愛なるMr Buurmanあなたは私の英雄です! xD開催:p –