用JavaScript获取Asp.net服务器端控件CheckBoxList的选中值数组

15 篇文章 0 订阅
 

通用版本(不依赖任何类库)
function GetCheckBoxListValue(objID)
...{
    
var v = new Array();
    
var CheckBoxList = document.getElementById(objID);
    
if(CheckBoxList.tagName == "TABLE")
    ...
{
        
for(i=0;i<CheckBoxList.rows.length;i++)    
            
for(j=0;j<CheckBoxList.rows[i].cells.length;j++)
  
if(CheckBoxList.rows[i].cells[j].childNodes[0])
                    
if(CheckBoxList.rows[i].cells[j].childNodes[0].checked==true)
                        v.push(CheckBoxList.rows[i].cells[j].childNodes[1].innerText);
    }

    
if(CheckBoxList.tagName == "SPAN")
    ...
{
        
for(i=0;i<CheckBoxList.childNodes.length;i++)
            
if(CheckBoxList.childNodes[i].tagName == "INPUT")
                
if(CheckBoxList.childNodes[i].checked==true)
                ...
{
                    i++;
                    v.push(CheckBoxList.childNodes[i].innerText);
                }
            
    }

    
return v;
}


Asp.net Ajax 
版本(依赖 Asp.net Ajax 类库支持)

function GetCheckBoxListValue(objID)
...{
    
var v = new Array();
    
var CheckBoxList = $get(objID);
    
if(CheckBoxList.tagName == "TABLE")
    ...
{
        
for(i=0;i<CheckBoxList.rows.length;i++)    
            
for(j=0;j<CheckBoxList.rows[i].cells.length;j++)
                
if(CheckBoxList.rows[i].cells[j].childNodes[0])
                    
if(CheckBoxList.rows[i].cells[j].childNodes[0].checked==true)
                         Array.add(v,CheckBoxList.rows[i].cells[j].childNodes[1].innerText);
    }

    
if(CheckBoxList.tagName == "SPAN")
    ...
{
        
for(i=0;i<CheckBoxList.childNodes.length;i++)
            
if(CheckBoxList.childNodes[i].tagName == "INPUT")
                
if(CheckBoxList.childNodes[i].checked==true)
                ...
{
                    i++;
                    Array.add(v,CheckBoxList.childNodes[i].innerText);
                }
            
    }

    
return v;
}

ASP.NET中,如果无法获取到动态生成的CheckBoxList控件,可能是因为控件的状态没有被正确地保存到服务器上。为了确保能够在服务器端正确获取到动态生成的CheckBoxList,你需要在页面的回传(Postback)时能够重建控件的状态。以下是几个可能的解决方法: 1. 确保CheckBoxList控件是在服务器端创建的,如果在客户端JavaScript中动态添加,那么在回传时,服务器端不会识别这个控件。 2. 如果CheckBoxList是通过数据绑定动态生成的,可以使用ViewState来保存控件的状态。确保ViewState在页面上是启用的,这通常是在页面指令中设置`EnableViewState="true"`。 3. 确保在CheckBoxList控件前加上`<asp>`标签,这样ASP.NET框架才能正确处理控件的状态。 4. 如果以上方法都无法解决问题,可以尝试在页面加载时(例如在Page_Load事件中)重新创建并绑定CheckBoxList控件,这样即使在回传后控件也能保持其状态。 代码示例: ```csharp protected void Page_Load(object sender, EventArgs e) { // 确保在每次页面加载时创建CheckBoxList if (!IsPostBack) { CheckBoxList checkboxList = new CheckBoxList(); // 设置CheckBoxList的属性和事件处理程序 // ... // 添加到页面控件中或某个容器控件中 // ... // 绑定数据 // ... } } ``` 5. 在处理回传事件时(例如CheckBoxList的ItemCheck事件),确保控件已经被重新创建,这样事件处理器才能正确执行。 6. 检查页面中是否有其他代码或控件可能导致ViewState丢失,如Response.Redirect()或清除ViewState的操作。 确保使用以上方法后,动态生成的CheckBoxList应该能够在服务器端被正确处理和获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值