Frage

Ok ich muss in einem Gridview den Wert eines verborgenen Feldes ändern und hier ist, was ich habe, so weit:

for(var i = 0; i < gv_Proofs.rows.length; i++)
{
    var tbl_Cell = gv_Proofs.rows[i].cells[0];
    var sdiFound = false;

    for(var x = 0; x < tbl_Cell.childNodes.length; x++)
    {
        if(tbl_Cell.childNodes[x].id == "_ctl0_MasterContentPlaceHolder_gv_Proofs__ctl2_lbl_SDI")
        {
            if(tbl_Cell.childNodes[x].innerHTML == sdi)
                sdiFound = true;
        }
        if(tbl_Cell.childNodes[x].id == "_ctl0_MasterContentPlaceHolder_gv_Proofs__ctl2_lbl_Updated" && sdiFound)
            tbl_Cell.childNodes[x].value = "true";
    }
}

kann mir jemand sagen, was ich falsch mache? Vielen Dank!

War es hilfreich?

Lösung

Ich habe es funktioniert. Die obige Schleife funktioniert genau richtig, aber anscheinend mein Wert von sdi wurde nicht immer richtig gesetzt zu werden, und somit der Wert I Überprüfung wurde immer auf false gesetzt. So ist die oben funktionierte perfekt in meinem Fall, wenn jemand überhaupt dieses Problem hat es erneut.

Andere Tipps

Ihre erste Aussage ist nur wahr, wenn die childNode id (abgeschnitten) lbl_SDI. Ihre zweite Aussage gilt allerdings nur, wenn die erste Aussage wahr ist (durch sdiFound) und die Identifikation ist (abgeschnitten) lbl_Updated.

So gibt es keine Möglichkeit für die zweite Aussage zu immer wahr zu sein. Die Variable sdiFound wird nur wahr sein, wenn die Knoten-ID nicht lbl_Updated.

Ich denke, eine Menge Leute wahrscheinlich nicht einverstanden mit Ihnen speziell auch die .NET-ID verweist. Haben Sie darüber nachgedacht mit:

<%= lbl_SDI.ClientID %>

in Ihrem Javascript?

gut, können Sie sagen, was passiert ist? es scheint, als ob Sie die sdiFound Variable auf false zurückgesetzt zu vergessen, oder die Schleife bricht ab, wenn Sie es finden.

so weit wie Ihre Frage:

Wenn Sie den versteckten html-Eingang als Serversteuerung ausgeführt wird, dann wird es durch die Gridview angezeigt werden, und es wird eine eindeutige ID hat. Sie könnte es dann unter Verwendung getElementByld finden. Sie können in einer Schleife setzen diese, die die richtige ID für Sie erstellt und Sie sollten Ihre Kontrolle der Lage zu finden.

Edit: klassischer Fall von Check bevor Sie Beiträge verfassen. Offenbar versteckte Einstellung true = tatsächlich verhindert, dass Datenbindung die sein, warum die JS Fragen. I würde sagen, dass dies eine jener typischen Probleme mit ASP.NET, die mich verfluchen Namen sehr ist, aber Sie können nur wählen, die Kontrolle mit einem der vielen anzupassen googleable Lösungen.

Kommentare über die Verwendung von Element-ID in ASP.NET intakt gelassen, weil es böse ist.


Hard ohne mehr Code zu kennen (wenn dies genau ist die Ausführung? Ist etwas anderes es überschreiben? Was bedeutet das Markup aussehen?), Aber ich kann jetzt sagen, dass Referenzierung ein Element durch seine ASP.NET verformte ID ist ein Bad Idea (TM).

Wenn Sie schlage ich vor, Sie versuchen, und ändern Sie diese in der Code-Behind, wo die Referenz für Sie gehandhabt wird, oder zumindest die JS dort schreiben, wo Sie clientID verwenden können. Gelingt das nicht, ich würde versuchen und das Element durch ein erweitertes Element Jäger finden - Ihre eigene oder eine Bibliothek util wie jquery et al die „$“ Funktion -., Die Sie stattdessen eine robuste CSS oder XPath-Argument zu verwenden, ermöglicht

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