2009-08-12 17 views
0

ich habe eine Kontrolle i hinter Code erstelltZugriff auf eine Kontrolle in Javascript

Dim txtdate1 As New TextBox 
    txtdate1.ID = "txtdate1" 
    cell.Controls.Add(txtdate1) 

Zelle ist eine Header Tabellenzelle i zu einer Gridview hinzugefügt.

Ich brauche dies in Javascript

var txtdate1 = document.getElementById('txtdate1'); 

ODER

var txtdate1 = document.getElementById('<%=txtdate1.clientID'); 

Wie dies geschehen kann zugreifen?

Dies ist, wie die Zelle erstellt

Dim cell As New TableCell 
Dim row As New GridViewRow(-1, -1, DataControlRowType.Separator, DataControlRowState.Normal) 
    row.BackColor = System.Drawing.ColorTranslator.FromHtml("#B5C7DE") 
    row.ForeColor = Drawing.Color.White 
    If GridView1.Rows.Count <> 0 Then 
     GridView1.Rows(0).Parent.Controls.AddAt(0, row) 
    Else 

    End If 

    row.Controls.Add(labelcell) 
    row.Cells.Add(cell) 

Antwort

0

Sie sollten die eingebaute in $find Funktion von MS Ajax in Verbindung mit ClientID nutzen können.

var txtdate1 = $find('<%=txtdate1.ClientID %>'); 
+0

Ich bekomme Folgendes: Name 'txtdate1' ist nicht deklariert – Eric

+0

Der Fehler ist richtig, weil das Steuerelement auf der Seite nicht deklariert ist. Sie haben es hier mit einem dynamischen Steuerelement zu tun, also müssen Sie eine dynamische Suche durchführen. – Yona

+0

@Y Low- Wie würde ich dynamische Suche in dieser Situation verwenden? Ich habe noch nie davon gehört. – Eric

1

Versuchen:

var txtdate1 = $find('<%= cell.FindControl("txtdate1").ClientID %>'); 

Oder wenn Sie das Steuerelement dynamisch in Code zu erstellen, um eine Eigenschaft der Seite der Client-ID speichern und dann die Eigenschaft machen.

zuerst eine Klasse Eigenschaft erstellen:

Dim txtID As String  'This should be a class property 

Dann, wenn Sie das Steuerelement dynamisch erstellen, speichern Sie die ClientID:

Dim txtdate1 As New TextBox 
txtdate1.ID = "txtdate1" 
cell.Controls.Add(txtdate1) 
Me.txtID = txtdate1.ClientID 'Save the client id to a property 

Dann in javascript Sie die Steuerung wie folgt laden:

var txtdate1 = $find('<%= txtID %>'); 
+0

das Problem mit diesem ist, dass Zelle auch dynamisch erstellt wird! Ich werde meine Frage erneut bearbeiten. – Eric

+0

Dann verwenden Sie einfach eine Seitenvariable, um die ClientID zu speichern, (zweiter Teil meiner Antwort) – Yona

+0

ich bekomme diesen Fehler jetzt: '... txtid' ist in diesem Kontext nicht zugänglich, weil es 'privat' ist. – Eric

-1

Sie haben es fast schon. Eigentlich bin ich überrascht, wenn deine zweite Zeile kompilieren würde.

var txtdate1 = document.getElementById('<%= cell.FindControl("txtdate1").ClientID %>'); 

By the way, Leute, es gibt einen Unterschied zwischen Javascript und Jquery, und die OP nie angegeben, um die Anwesenheit von jquery.

+0

das Problem mit diesem ist, dass Zelle ist dynamisch erstellt auch! Ich werde meine Frage erneut bearbeiten. – Eric

+0

Nur Sie haben die Anwesenheit von jquery angegeben ... –

+0

Ich beziehe mich auf die anderen zwei Antworten, die eine native Funktion durch $ find ersetzen. – harpo

Verwandte Themen