title: Repeater is not getting client-side updated Items
body: <p>This is code for a user control  I have a repeater which has data value attributes (<code>data-camera-mac</code> and <code>data-checked</code>).  These values will be filled on the C# side:</p>
  
  <pre><code>repeaterCameras.DataSource = variableName;
  repeaterCameras.DataBind();
  </code></pre>
  
  <p>I have an on-click C# method which reads the Items in the Repeater fine (method <code>btnSave_Changes</code>).  Then I added some JavaScript which manipulates and shifts the HTML.  The JavaScript works fine and manipulates the front end as expected.  The JavaScript also changes the data value attributes.  However, when the on-click event happens (<code>btnSave_Changes</code>), it prints the original set of Items in the Repeater as if no change happened from the JavaScript.  </p>
  
  <p><strong>HTML:</strong></p>
  
  <pre><code>&lt;asp:Repeater ID="repeaterCameras" runat="server" &gt;
      &lt;ItemTemplate&gt;
          &lt;div class="&lt;%# (bool)Eval("Checked") ? "row-fluid camera-row highlight-row highlight_selected_row" : "row-fluid camera-row highlight-row" %&gt;" 
              data-camera-mac=&lt;%# Eval("Mac") %&gt; &gt;
  
               &lt;div class="highlight-bar"&gt;&lt;/div&gt;
  
              &lt;div id="divArrows" class="arrow-column camera-column-padding" 
                  runat="server" visible="true" data-checked=&lt;%# Eval("Checked")%&gt; 
                  data-camera-mac=&lt;%# Eval("Mac") %&gt; &gt;
                  &lt;span id="spArrows" &gt;
                      &lt;i id="upArrow" class="icon-arrow-up icon-large" 
                          style="cursor:pointer;" onclick="upArrowClick(this)" &gt;&lt;/i&gt;
                      &lt;i id="downArrow" class="icon-arrow-down icon-large" 
                          style="cursor:pointer;" onclick="downArrowClick(this)" &gt;&lt;/i&gt;
                  &lt;/span&gt;
              &lt;/div&gt;
  
              &lt;div class="check-box-column camera-column-padding"&gt;
                &lt;span id="spCheckBox" runat="server"&gt;
                  &lt;i id="cameraSelectCheckBox" 
                      class="&lt;%# (bool)Eval("Checked") ? "icon-ok icon-large" : "icon-check-empty icon-large" %&gt;"   
                      style="cursor:pointer;" onclick="clickCheckBox(this)"
                      data-camera-mac=&lt;%# Eval("Mac") %&gt; &gt;&lt;/i&gt;
                &lt;/span&gt;
              &lt;/div&gt;
  
         &lt;/div&gt;
      &lt;/ItemTemplate&gt;
  &lt;/asp:Repeater&gt;
  </code></pre>
  
  <p><strong>JavaScript:</strong></p>
  
  <pre><code>function clickCheckBox(element) {
      var notHighlight = "row-fluid camera-row highlight-row";
      var highlight = "row-fluid camera-row highlight-row highlight_selected_row";
      if (element.className == "icon-check-empty icon-large"){
          element.className = "icon-ok icon-large";
          highlightRow(element.getAttribute("data-camera-mac"));
      }else if(element.className == "icon-ok icon-large"){
          element.className = "icon-check-empty icon-large";
          unHighlightRow(element.getAttribute("data-camera-mac"));
      } else {
          alert("Problem:  " + element.className);//TODO:  log error
      }
  }
  
  function highlightRow(mac){
      var currentClass = "row-fluid camera-row highlight-row";
      var newClass = "row-fluid camera-row highlight-row highlight_selected_row";
      var rowsList = document.getElementsByClassName(currentClass);
      for(var i = 0; i &lt; rowsList.length; i++){
          if (rowsList[i].getAttribute("data-camera-mac") == mac) {
              var tempElem = rowsList[i].getElementsByClassName("arrow-column camera-column-padding")[0];
              tempElem.style.visibility = 'visible';
              tempElem.setAttribute("data-checked", "true");
              rowsList[i].className = newClass;
              break;
          }
      }
  }
  
  function unHighlightRow(mac){
      var newClass = "row-fluid camera-row highlight-row";
      var currentClass = "row-fluid camera-row highlight-row highlight_selected_row";
      var rowsList = document.getElementsByClassName(currentClass);
      for(var i = 0; i &lt; rowsList.length; i++){
          if (rowsList[i].getAttribute("data-camera-mac") == mac) {
              var tempElem = rowsList[i].getElementsByClassName("arrow-column camera-column-padding")[0];
              tempElem.style.visibility = 'hidden';
              tempElem.setAttribute("data-checked", "false");
              rowsList[i].className = newClass;
              break;
          }
      }
  }
  
  function upArrowClick(element) {
      var current = element.parentNode.parentNode.parentNode;
      var previous = findPrevious(current);
      if (previous) {
          current.parentNode.insertBefore(current, previous);
      }
  }
  
  function findPrevious(element) {
      do {
          element = element.previousSibling;
      } while (element &amp;&amp; element.nodeType != 1);
      return element;
  }
  
  function downArrowClick(element) {
      var current = element.parentNode.parentNode.parentNode;
      var next = findNext(current);
      if (next) {
          current.parentNode.insertBefore(next, current);
      }
  }
  
  function findNext(element) {
      do {
          element = element.nextSibling;
      } while (element &amp;&amp; element.nodeType != 1);
      return element;
  }
  </code></pre>
  
  <p><strong>C#:</strong></p>
  
  <pre><code>    protected void btnSave_Changes(object sender, EventArgs e)
      {
          System.Diagnostics.Debug.WriteLine("btnSave_Changes");
          if (repeaterCameras == null || repeaterCameras.Items == null || repeaterCameras.Items.Count == 0)
              return;
  
          System.Diagnostics.Debug.WriteLine("repeaterCameras.Items.Count = " + repeaterCameras.Items.Count);
          for (int i = 0; i &lt; repeaterCameras.Items.Count; i++)
          {
              System.Diagnostics.Debug.WriteLine("i = " + i);
              HtmlGenericControl div = repeaterCameras.Items[i].FindControl("divArrows") as HtmlGenericControl;
              string macStr = div.Attributes["data-camera-mac"].ToString();
              string checkedStr = div.Attributes["data-checked"].ToString();
              System.Diagnostics.Debug.WriteLine("data-camera-mac = " + macStr + ", data-checked = " + checkedStr);
          }
  
      }
  </code></pre>