Frage

ich das ASP net Ajax Toolkit bin mit und haben eine GridView im UpdatePanel, alles funktioniert.

Wenn ich versuche, etwas JQuery gegen den Tisch zu laufen, die erzeugt werden sollen, gibt es keine Zeichen der GridView (oder Tabelle HTML) im DOM, der zurückgegeben wird. Ich gehe davon aus das alles von ASP generiert Javascript getan wird?

Wie kann ich führen Sie alle Aktionen auf einer GridView, die innerhalb eines UpdatePanel liegt?

War es hilfreich?

Lösung

ASP.NET werden die Namen für die Kontrollen unter bestimmten Bedingungen mangle. Sie können an der generierten Source aussehen wollen, um sicherzustellen, dass Sie die Kontrolle durch den Namen durch ASP.NET angegeben verweisen, wenn es erzeugt wird. Es ist wahrscheinlich nicht der Name, den Sie in der Auszeichnungs gab.

Andere Tipps

Wenn Sie Ihren Javascript in dem Code-Behind, in der Page_Load für Beharren erzeugen können, dann können Sie Ihre GridView1.ClientID, etc. in Ihr Javascript injizieren. (Ich benutze einen Text hier zum Beispiel, aber es folgt das gleiche Konzept.)

protected void Page_Load(object sender, EventArgs e)
{
    string js = "$(document).ready(function(){$(\"#" + this.TextBox1.ClientID + "\").text('hello world');});";
    HtmlGenericControl script = new HtmlGenericControl("script");
    script.Attributes.Add("type", "text/javascript");
    script.InnerHtml = js;
    Page.ClientScript.RegisterStartupScript(this.GetType(), "key", js, true);
}

Es gibt drei Lösungen für diese, die ich mir vorstellen kann. Die erste Injektion Javascript vom Server mit ClientID als Dave schon sagt, funktioniert aber bekommt wirklich sehr schnell chaotisch. Ich tat dies für eine Weile, aber diese Art von tight-Kopplung von serverseitigen und clientseitige Probleme verursacht.

Die zweite ist eine andere Art und Weise zu schaffen, die Entitäten, wie eine CSS-Klasse zu identifizieren. Das ist besser als die erste Option, aber lässt Sie mit viel Fremdklassendefinitionen Sie haben gerade zu halten.

Die Lösung, die ich bevorzuge, ist ein Javascript-Frameworks wie jQuery zu verwenden, die eine Selektor-Engine hat. Auf diese Weise können Sie rund um die UniqueID Müll durch einige geschickte Auswahl und DOM-Traversal zu erhalten.

Lassen Sie uns sagen Sie ein Steuerelement mit dem Namen myControl. ASP.Net wird einen großen Namensraum davor erzeugen, so gibt es keine ID Kollisionen, wenn es macht. Aber Sie können jeden myControl auswählen, indem Sie $ ( ‚[id $ = myControl]‘) zu tun, die jedes Objekt mit einer ID auswählt, die mit myControl endet. Es gibt wahrscheinlich analoge Möglichkeiten, dies in einem anderen Rahmen zu tun, aber ich bin nicht vertraut genug mit ihnen ein Beispiel zu geben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top