2011-01-13 21 views
0

Ich versuche, eine Zeichenfolge, die die ClientID eines Benutzersteuerelements enthält, an die Eigenschaft eines anderen Steuerelements innerhalb einer GridView-Vorlagenspalte zu binden. Ich bekomme den Fehler 'lblVar02' wird nicht deklariert. Es ist möglicherweise aufgrund seines Schutzniveaus nicht zugänglich. Wie mache ich das?ClientID an UserControl-Eigenschaft in einer Gridview binden

<uc:CriteriaType id="ctVar02" runat="server" 
    OnClientChange="<%# &quot;toggle('&quot; & lblVar02.ClientID & &quot;');&quot; %>"></uc:CriteriaType> 
<uc:Label ID="lblVar02" runat="server" /> 
+0

Was ist oben in der GridView-Vorlagenspalte angegeben? –

+0

@Brian, ja ist es – adam0101

Antwort

0

Für jeden, der dieses Problem hat, könnte dies drei verschiedene Wege gelöst haben, die ich kenne.

  1. Geben Sie es nicht in der ClientID und die JavaScript ändern durch das DOM (this.parentNode.getElementsByTagName oder etwas) sucht die andere Steuer kriechen. Diese Lösung erschien mir schwach, da sich die Ids möglicherweise ändern könnten.
  2. Legen Sie die Eigenschaft im RowDataBound-Ereignis fest. Das wäre einfach, aber meine Seite ist riesig und da dies nach TrackViewState() passieren würde, würde es unnötigen Bloat zu meinem ViewState hinzufügen.
  3. Verschieben Sie das Steuerelement lblVar02 in das Steuerelement ctVar02. Das ist, was ich getan habe. Ich habe versucht, den JavaScript-Aufruf an meine Benutzersteuerungseigenschaft zu binden, sodass ich sie dann an ein clientseitiges "Klick" -Ereignis eines Label-Steuerelements in meinem Benutzersteuerelement binden konnte. Durch Verschieben des einen Benutzer-Steuerelements innerhalb des anderen konnte ich den JavaScript-Aufruf mit der ClientID direkt an das clientseitige "Klick" -Ereignis des Labels binden.
Verwandte Themen