问题:在选中repeater中的某一行后,怎么对该行进行修改操作?修改button在repeater控件外,repeater中没有其他操作控件。
曾想着设置一个CheckBox隐藏控件,用Javascript来操作CheckBox的Checked属性。但我查看了源文件,CheckBox的ID是动态变化的。但我不知道在javascript中怎么去取得选中行的CheckBox的ID。请指点下迷津,万分感谢!ASP.NETJavaScriptCheckBox

解决方案 »

  1.   


    CheckBox绑定OnClick事件Cbo_Click(this)function Cbo_Click(obj){
        alert(obj.id);
    }
      

  2.   

    将CheckBox换成<input id="id_<%# Eval("id")%>" name="id_<%# Eval("id")%>" type="checkbox" value="id_<%# Eval("id")%>" />这样是不会变的
      

  3.   

    首先非常感谢您的回答,但不是我想要的答案
    1.repeater中没有其他操作控件。没有CheckBox控件。
    2.CheckBox控件只是自己设想的一个隐藏控件,这只是自己的想法。
    3.CheckBox控件没有OnClick事件
      

  4.   

    重点在你选中某行,这个选中某行是不是做一些特殊的处理,进行组合或获取你需要的值进行保存,通过修改按钮获取你选中某行的值,CheckBox控件是有OnClick只是强制附加上去的,他是Javascript事件而已
      

  5.   


    这样的id 确实是不变的,但是javascript 操作的也只能是第一个checkbox。还是需要id动态变化才行。非常感谢,我已经自己解决了。
      

  6.   

    我自己的想法是:设置一个隐藏CheckBox控件,所以不会用到OnClick事件。操作javascript貌似用的OnClientClick事件吧。非常感谢,我已经解决了。
      

  7.   

    我自己的做法:checkbox部分:
    <div style="visibility:hidden;"><input id="<%#Container.ItemIndex +1 %>" name="chkitem" type="checkbox" value="<%#Eval("Id")%>"/></div>
    js部分:function tabtrclick(m){     // 获取repeater控件中的table中所有tr的信息    
      var trStr=document.getElementById("zidiantab").getElementsByTagName("tr");    // 获取repeater控件中所有checkbox的信息    
        var chkStr=document.getElementById(m);
        var chkinput = document.getElementsByTagName("input");     // 所有checkbox不选中
        for(var i=0; i<chkinput.length; i++) { 
            if(chkinput[i].type=="checkbox") { 
                chkinput[i].checked = false; 
             } 
        } 
        // 清除选中行变色
    for(var i=0;i<trStr.length;i++) { 
        trStr[i].style.background = "#ffffff";
    }
        // 选中行变色
        trStr[m].style.background = "#FC8E5E";
        // 选中行checkbox选中
        chkStr.checked = true;

    function ischoosed(){    var chkinput = document.getElementsByTagName("input"); 
        var flg = false;
        // 遍历所有checkbox,有选中的返回true并跳出循环    
        for(var i=0; i<chkinput.length; i++) { 
            if(chkinput[i].type=="checkbox" && chkinput[i].checked){
                flg = true;
                break;      
            }      
        } 
        if (flg) {
            // 有checkbox被选中
            return true;
        }else{
            // 没checkbox被选中
            alert("请在列表中选择您要修改的对象!");
            return false; 
        }
    }
    cs部分: protected void btnModify_Click(object sender, EventArgs e)
        {
            string str = Request["chkitem"].ToString();
            Response.Redirect("DataModify.aspx?Id="+str);
            
        }
    请多多指教!