日期:2014-05-17  浏览次数:20496 次

急急急。。获取repeater中的html控件checkbox的值
获取repeater中的html控件checkbox的值
if(merge == 1)
{
for (int i = 0; i < this.RptList.Items.Count; i++)   
{  
HtmlInputCheckBox CB = (HtmlInputCheckBox)this.RptList.Items[i].FindControl("CheckBox");  
if (CB.Checked == true) ??怎么没有一个选择呢????
{  
}}
}
js代码

  function FormSelectAll(formID,EleName,e) 
  {  
  var Elements = document.getElementByIdx(formID).elements;
  for (var i = 0; i < Elements.length;i++)  
  {  
  if (Elements[i].type == "checkbox" && Elements[i].name.indexOf(EleName) >= 0) 
  {  
  Elements[i].checked = e.checked; 
  }  
  }  
  } 

html代码
  <a href="OrderList.aspx?merge=1" onclick="return MessgerBox('确认全选登记订单吗?')"><input name="CheckAll" type="checkbox" value="" onclick="javascript:FormSelectAll('form1','CheckBox',this);" /></a>  
  <form id="form1" runat="server"> 
  <asp:Repeater ID="RptList" runat="server" > 
  <ItemTemplate> 
  <input name="CheckBox" id="CheckBox" runat="server" type="checkbox" value='<%# DataBinder.eval_r(Container.DataItem, "F_JobID")%>' />  
   
  </ItemTemplate> 
  </asp:Repeater>  
  </form> 
全选后,repeater中的checkbox已经选择了,但是后台判断时候为false

------解决方案--------------------
只有后台改变checkbox的状态,才能在后台获取到。因为状态是存储在viewstate里面了,虽然js改变了checkbox的状态,但是没有改变viewstate,所以还是false。想要获取html中checkbox的状态,应该在form中获得。
------解决方案--------------------
我知道为什么 因为你用的是a连接 <a href="OrderList.aspx?merge=1" 无论你怎么打勾 你一点这个连接就等于重新打开OrderList.aspx这个页面 只是多了个merge=1参数罢了 你想想新的页面怎么会知道你之前那个没参数的页面是啥状态 打了几个勾呢?

你加个按钮

if(merge == 1)
{
for (int i = 0; i < this.RptList.Items.Count; i++) 
{
HtmlInputCheckBox CB = (HtmlInputCheckBox)this.RptList.Items[i].FindControl("CheckBox");
if (CB.Checked == true) ??怎么没有一个选择呢????
{
}}
}
放在后台按钮事件里就ok了