在GridViewRow中禁用/启用文本框

时间:2010-12-14 09:19:24

标签: c# javascript asp.net

我在GridView中有一个复选框和一个文本框(对于每一行),我希望能够编写一些javascript来启用和禁用文本框,具体取决于复选框的状态(选中或取消选中) 。我想我必须以某种方式给JS行行索引。这可能吗?

3 个答案:

答案 0 :(得分:1)

如果您准备使用jquery,那么可以通过以下方式轻松完成:

$(document).ready(function() {

   $('.grid tr').each(function() {
      var r = $(this);
      var c = r.find('.check');
      var t = r.find('.text');
      var f = function(c1, t1) { return function() {
            if (c1.attr('checked')) {
               t1.removeAttr('disabled');
            }
            else {
               t1.attr('disabled', 'disabled');
            }
         };
      };
      c.click(f(c, t)); // attach click event handler
      f(c, t); // set initial state
   });
});

上面的脚本假设gridview表用grid css类装饰,每个文本框和复选框分别用checktext css类装饰。

答案 1 :(得分:0)


是的,这绝对是可能的。

要实现这一点,您需要执行以下操作:

  1. 编写一个通用JavaScript函数,根据Check-Box的状态处理文本框的启用/禁用;
    示例: -
    function ManageControlEnabling(sourceCheckBoxId, affectingControlId)
    {
    var sourceCheckBox = document.getElementById(sourceCheckBoxId);
    var affectingControl = document.getElementById(affectingControlId);
    var shouldEnable = false;

    if (sourceCheckBox && affectingControl)
    {
    shouldEnable = sourceCheckBox.checked;

    if(shouldEnable)
        affectingControl.disabled = false;
    else
        affectingControl.disabled = true;
    

    if(shouldEnable) affectingControl.disabled = false; else affectingControl.disabled = true;

  2. 处理Grid-View的Row-Data-Bound事件。在.Net代码中实现类似的功能,以根据复选框的状态处理文本框(对于每一行)的启用/禁用。并将JavaScript函数添加到复选框;
    示例: -

    }
    }

  3. 请查看这是否有帮助。

    感谢。

答案 2 :(得分:0)

感谢您的所有回复,我通过回发来解决这个问题 - 不是最好的方法,但由于时间限制,这是合乎逻辑的选择