在autopostback ASP.net C#之后将焦点设置在下一个文本框/ tabindex上

时间:2018-04-19 05:22:30

标签: c# asp.net

我知道这个问题已经被问了很多次,但我找到的每个解决方案都没有解决我的问题。

在我的页面中,我正在动态创建多个包含3列的GridView,然后将它们添加到我的更新面板中。我使用具有 TextChanged 事件和 AutoPostback = true 的TextBox填充了第3列。现在,当用户按Tab键时,将触发TextChanged事件。但焦点消失了。当我按Tab键时,我希望它移动到下一个文本框,但它只是消失了。

我尝试在我的更新面板上添加UpdateMode="Conditional" ChildrenAsTriggers="false",但它没有用。

我也尝试过使用这个javascript:

var postbackElement = null;
  function SetFocusToNextControl(newTabIndex)
  {
    for (var i=0;i<=document.form1.elements.length;i++)
    {
        if (document.form1.elements[i].tabIndex == newTabIndex)
        {
          document.form1.elements[i].focus();
          break;
        }
    }
  }
  function RestoreFocus(source, args)
  {
    document.getElementById(postbackElement.id).focus();
    if (document.getElementById(postbackElement.id).type =='text')
      SetFocusToNextControl(document.getElementById(postbackElement.id).tabIndex+1)
  }
  function SavePostbackElement(source, args)
  {
    postbackElement = args.get_postBackElement();
  }
  function AddRequestHandler()
  {
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(RestoreFocus);
    prm.add_beginRequest(SavePostbackElement);
  }

当我第一次按Tab键,TextChanged事件被触发,焦点设置在下一个文本框上时,它工作正常。但是当我第二次按下标签时,焦点会再次消失。它只工作一次。我怎样才能解决我的问题?

1 个答案:

答案 0 :(得分:0)

在文本框TextChanged事件的最后一个。

Address ("desc", l1 (43.23, 32.12, "south"), "country")