2016-03-25 15 views
0

おはようございます。私は、リピーターと動的オブジェクトのリストを持つシンプルなWebサイトでなければならないものを扱っています。私は4つの他のオブジェクトの4つのリストプロパティを含む親オブジェクトを使ってデータをセットアップしました。動的オブジェクトリストをリピータコントロールにバインド

要求(親)

  • イベント
  • フライト
  • ホテル
  • カー

    <asp:Repeater ID="rptEvent" runat="server" EnableViewState="false"> 
           <ItemTemplate> 
            <table class="tableStyle"> 
             <tr> 
              <td colspan="4" class="headerLabel"> 
               CLIENT EVENT INFORMATION - <%# Eval("ProjectName") %> 
              </td> 
             </tr> 
             <tr> 
              <td class="regLabel row1">Company Name: (If Billable)</td> 
              <td colspan="3" class="row1"> 
               <asp:DropDownList ID="cboClientName" runat="server" AutoPostBack="true" CssClass="dropDownClass1" DataSource='<%# Eval("ClientName") %>' SelectedValue='<%# Eval("SelectedClientName") %>' ClientIDMode="Static" OnSelectedIndexChanged="cboClientName_SelectedIndexChanged"></asp:DropDownList> 
              </td> 
             </tr> 
             [...more items...] 
            </table> 
            <asp:Panel runat="server" ID="pnlAdd" Visible="<%# Container.ItemIndex + 1 == tempRequest.events.Count && tempRequest.events.Count < 3 %>"> 
             <asp:Label runat="server" CssClass="regLabel" Text="Would you like to add another destination?&nbsp;&nbsp;&nbsp;" /> 
             <asp:CheckBox ID="inptAdditionalInfo" AutoPostBack="true" runat="server" OnCheckedChanged="inptAdditionalInfo_CheckedChanged" /><br /><br /> 
            </asp:Panel> 
           </ItemTemplate> 
          </asp:Repeater> 
    
    ページが最初に一つのオブジェクトにロードし、ここでされて何が起こる

それぞれのプロパティリストとすべてが素晴らしいと素晴らしいです。各オブジェクトには、異なるプロパティタイプが含まれています。文字列のリスト、個々の文字列のプロパティ、dateTimeのプロパティなど。私は、これらの値をオブジェクトにバインドするための正しい構文だと思っています。ただし、ユーザーがチェックボックスをオンにしてアイテムを追加するときに問題が発生します。

何かが起こる前にページがリロードされ、初期データの「再起動」が作成され、データは保持されません。私は正しく動作すると思っていたコードの中にアップデートメソッドを持っています。

protected void UpdateRequest() { 

    for (int i = 0; i <= tempRequest.events.Count - 1; i++) 
    { 
     // Set the Event =============================================================================== 
     var temp = (DropDownList)rptEvent.Items[i].FindControl("cboClientName"); 
     tempRequest.events[i].SelectedClientName = temp.SelectedItem.ToString(); 

これは機能しません。永続データが取得されません。各リピータコントロールの値を適切なオブジェクトの適切な項目に正しくバインドするにはどうすればよいですか? IE:ClientNameはリピータの2番目のインデックスからオブジェクトリストの2番目のインデックスまでですか?

私はこの質問に十分な情報を与えていただきたいと思います。

答えて

0

多くの研究と掘り出しの後、私はいくつかを発見しました。一つは、クリックとリフレッシュの間に永続的なデータを保存するためにViewState []を使う必要がありました。第二に、データをオブジェクトに保存する順序は少し後ろだった。

私は今これを修正しました。読んでくれてありがとう。

関連する問題