2016-03-25 3 views
0

Доброе утро. Я работаю над тем, что должно быть простым веб-сайтом с ретранслятором и списком динамических объектов. У меня установлены мои данные с родительским объектом, содержащим четыре свойства списка четырех других объектов.Связать список динамических объектов с контроллером ретранслятора

Запрос (Parent)

  • Событие
  • Flight
  • Отель
  • автомобилей

    <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 из второго индекса ретранслятора ко второму индексу списка объектов?

Надеюсь, я дал достаточно информации по этому вопросу.

ответ

0

После долгих исследований и копания я обнаружил несколько вещей. Во-первых, мне нужно было использовать ViewState [] для сохранения постоянных данных между кликами и обновлениями. Во-вторых, порядок сохранения данных для объектов был немного назад.

У меня это исправлено. Спасибо за чтение.

Смежные вопросы