Javascript属性减慢了动态表的速度

时间:2011-07-29 15:36:33

标签: c# javascript

我有一个表在下拉列表更改时在某些c#代码隐藏中动态创建。这个表中有9列。前8个应该在一个组中。另一个属性。选择最后一个属性后,我希望前8个未选中。当检查前8个中的任何一个时,我希望取消选中最后一个属性。我添加了一些javascript它可以工作,但它导致表加载速度极慢。如果有更简单的方法,请告诉我。谢谢!

通过c#

添加javascript函数调用
attr1.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr2.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr3.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr4.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr5.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr6.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr7.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr8.Attributes.Add("onClick", "uncheckOK(" + rowCount + ");");

attr9.Attributes.Add("onClick", "uncheckAttr(" + rowCount + ");");

取消选中

的功能
function uncheckAttr(row) {
    var chk1 = document.getElementById("MainContent_attr1-" + row);
    chk1.checked = false;
    var chk2 = document.getElementById("MainContent_attr2-" + row);
    chk2.checked = false;
    var chk3 = document.getElementById("MainContent_attr3-" + row);
    chk3.checked = false;
    var chk4 = document.getElementById("MainContent_attr4-" + row);
    chk4.checked = false;
    var chk5 = document.getElementById("MainContent_attr5-" + row);
    chk5.checked = false;
    var chk6 = document.getElementById("MainContent_attr6-" + row);
    chk6.checked = false;
    var chk7 = document.getElementById("MainContent_attr7-" + row);
    chk7.checked = false;
    var chk8 = document.getElementById("MainContent_attr8-" + row);
    chk8.checked = false;
}
function uncheckOK(row) {
    var chk9 = document.getElementById("MainContent_attr9-" + row);
    chk9.checked = false;
}

2 个答案:

答案 0 :(得分:0)

您不能通过标准HTML执行此操作吗?制作一组单选按钮 - 为第1-8列提供相同的name属性,并为第9个属性提供不同的name。你应该只能选择其中一个。

或者,删除那些丑陋的代码并使用一些jQuery。类似的东西:

$('table.your-table input[type=radio]').click(function(){
    $('table.your-table input[type=radio]').not(this).removeAttr('checked');
});

编辑:实际上HTML选项不起作用,但我鼓励你通过jQuery来实现这一点,它就是它的基础。

答案 1 :(得分:0)

function uncheck() {
    var clickSource = event.srcElement;
    if (clickSource != null) {
        var fullid = clickSource.name;
        if (fullid != null) {
            if (fullid.indexOf('attr') != -1) {
                var checkboxid = fullid.substring(fullid.indexOf('attr'));
                var row = checkboxid.substring(checkboxid.indexOf('-') + 1);
                var attr = checkboxid.substring(checkboxid.indexOf('-') - 1, checkboxid.indexOf('-'));
                if (attr == '9') {
                    uncheckAttr(row);
                }
                else {
                    uncheckOK(row);
                }
            }
        }
    }
}