Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 禁用/启用GridViewRow中的文本框_C#_Javascript_Asp.net - Fatal编程技术网

C# 禁用/启用GridViewRow中的文本框

C# 禁用/启用GridViewRow中的文本框,c#,javascript,asp.net,C#,Javascript,Asp.net,我在GridView中有一个复选框和一个文本框(对于每一行),我希望能够编写一些javascript,根据复选框的状态(选中或未选中)启用和禁用文本框。我想我必须给JS行索引。这可能吗?如果您已经准备好使用jquery,那么可以通过以下方式轻松完成: $(document).ready(function() { $('.grid tr').each(function() { var r = $(this); var c = r.find('.check');

我在GridView中有一个复选框和一个文本框(对于每一行),我希望能够编写一些javascript,根据复选框的状态(选中或未选中)启用和禁用文本框。我想我必须给JS行索引。这可能吗?

如果您已经准备好使用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类修饰,每个文本框和复选框分别用
check
text
css类修饰。


是的,这是绝对可能的

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

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

    if(sourceCheckBox&&affectingControl)
    {
    shoulEnable=sourceCheckBox.checked

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

  • 处理网格视图的行数据绑定事件。在.Net代码中实现类似的功能,以根据复选框的状态处理文本框(每行)的启用/禁用。并将JavaScript函数添加到复选框中
    示例:-

    CheckBox checkSource;
    TextBox textAffecting;
    
    
    checkSource = e.Row.FindControl("cbSource") as CheckBox;
    textAffecting = e.Row.FindControl("tbAffecting") as TextBox;
    
    
    if(checkSource != null)
    {
        textAffecting.Enabled = checkSource.Checked;
    }
    
    
    checkSource.Attributes.Add("onclick", "ManageControlEnabling('" + checkSource.ClientID + "', '" + textAffecting.ClientID + "', true);");
    

  • 请看看这是否有帮助


    谢谢。

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

    谢谢你的帮助:)很遗憾,它不起作用-rowdatabound部分起作用(它添加属性,文本框根据复选框状态禁用/启用),但当我单击复选框时,它从不启用文本框-即使我去掉所有的if并让它启用文本框。我唯一要添加的是禁用asp.net页面上的视图状态验证。因为您正在修改页面中控件的状态,视图状态验证将抛出错误。此类错误在但是,禁用视图状态验证可以防止这种情况,并使JavaScript有机会在客户端修改html控件,同时迫使服务器端不要对此大惊小怪。