Aplikace ignoruje TextBox1.Focus()   otázka

ASP.NET WebForms

Dobrý den,

Mám dotaz ohledně funkce Focus.

Když jsem vytvářel aplikaci na svém soukromém PC, nastavoval jsem webovým prvkům k události OnTextChanged funkci Focus.

Hlavně proto, aby uživatelé mohli používat k ovládání aplikace povětšinou jen klávesnici, a aby je aplikace naváděla k správným ovládacím prvkům.

Ovšem poté, co jsem aplikaci překopíroval na firemní server, tak je tato funkce ignorována.

Může být problém ve verzi IIS?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A kde focus nastavujete? Z code-behind nebo v aspx filu či javascriptem?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Příklad kódu

<Script runat="server">

Protected Sub Polozka_OnChange(ByVal sender As Object, ByVal e As System.EventArgs)

   Dim cnn_p7 As New SqlConnection (System.Configuration.ConfigurationSettings.AppSettings("alfweb_Connection"))
   Dim txt_p7 As String = "Select Id, (Select Popis1 From Skl_Cs_PolozkyH Where Id = Skl_Cs_PolozkyR.Id) as Popis, (Select ZaJednotka From Skl_Cs_PolozkyH Where Id = Skl_Cs_PolozkyR.Id) as ZaJednotka, (Select DefMnozstvi From Skl_Cs_PolozkyH Where Id = Skl_Cs_PolozkyR.Id) as DefMnozstvi From Skl_Cs_PolozkyR Where EanKod = @Promena_Polozka"
   Dim cmd_p7 As New SqlCommand    (txt_p7, cnn_p7)
       cmd_p7.Parameters.Add       ("@Promena_polozka", SqlDbType.Varchar, 50).Value = Polozka.text
       cnn_p7.open()
   Dim dtr_p7 As SqlDataReader = cmd_p7.ExecuteReader()

   If dtr_p7.Read() Then
      Polozka.text             = dtr_p7("Id").ToString()
      Popis1.text              = dtr_p7("Popis").ToString()
      ZaJednotka.Text          = dtr_p7("ZaJednotka").ToString()
      MnozstviZj.Text          = dtr_p7("DefMnozstvi").ToString()
      Varianta1.DataTextField  = "Nazev1" 
      Varianta1.DataValueField = "Id"
      Varianta1.DatasourceId   = "QueryVarianta"
      Varianta1.Focus()
      
      QueryVarianta.ConnectionString      = System.Configuration.ConfigurationSettings.AppSettings("alfweb_Connection")
      QueryVarianta.SelectCommand         = "select [Id], [Nazev1] from SKL_CS_PolozkyV where Skupina = (Select Skupina from SKL_CS_PolozkyH where Id = '" + Polozka.Text + "') Order by [Id] Desc"

   Else
      Polozka.text        = ""
      Popis1.Text         = ""
      MnozstviZj.Text     = "0"
      Polozka.Focus()
   End If   

   dtr_p7.close()
   cnn_p7.close()
   
End Sub

</Script>

<asp:TextBox runat="server" id="Polozka" width="145" OnTextChanged="Polozka_OnChange" AutoPostBack="True"
 style="position: absolute; left: 95; top: 131; background-color:#FFFACD"/>

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkoušel jsem si postavit simple webapp a do ní umístil několik textboxů,následně jsem otestoval funkčnost fce Focus a vše funguje a to jak na localhost,tak i na IIS.Chyba bude asi jinde..;)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to už mě tedy nenapadá kde... :-(

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nenastavujete focus ještě na nějakou jinou komponentu? Nemáte tam náhodou ještě něco v Page_Load nebo tak?

Kdyžtak si v prohlížeči spusťte nějaké vývojářské nástroje (v IE třeba přes F12) nebo ve Firefoxu je plugin firebug - v kódu stránky najděte ten kus javascriptu, který nastavuje ten focus (ASP.NET ho do stránky vygenerovalo) a dejte si tam breakpoint, ať víte, jestli se to volá nebo ne.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Kontroloval jsem celý zdrojový kód a focus() jsem nastavoval pouze k událostem OnTextChanged.

Přesunul jsem aplikaci na nový server s Windows Server 2008 R2 a verzí IIS 7.5, a tam nyní focus() funguje.

Na původním serveru byly Windows Server 2003 a verze IIS 6, a zde bylo možné focus vyvolávat pouze Javascriptem.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To bude spise verzi .NETu, verze IIS nebo OS na to vliv nema.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback