急急急。。获取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了