无法在后面的代码中使用文本框ID

时间:2013-12-27 07:54:10

标签: asp.net

我有一个带有文本框的列的网格,我想在文本框中按下时限制Backspace和Delete键。我正在使用这个脚本来做到这一点。在代码背后,在页面加载事件中,当我尝试引用网格列文本框的ID时,它们没有显示出来。我在itemtemplate中使用文本框,文本框变为只读。

使用Javascript:

function doCheck()
    {         
        var keyCode = (event.which)?event.which:event.keyCode;
        if ((keyCode == 8) || (keyCode == 46))
            event.returnValue = false;         
    }

page_load事件:

 txtCode.Attributes.Add("onKeyDown", "doCheck();");

我无法引用任何网格的文本框ID。我在某个地方出错了吗?

2 个答案:

答案 0 :(得分:0)

您需要使用RowDataBound事件将该事件绑定到网格的每一行:

  protected void RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.cells[Index].Attributes.Add("onkeyDown", "function");
            }
        }

索引是包含文本框的列索引

希望这会有所帮助..

答案 1 :(得分:0)

请尝试以下代码:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        TextBox txtCode = (TextBox) e.Row.FindControl("txtCode");
        txtCode.Attributes.Add("onKeyDown", "doCheck();");
    }
}