2011-02-01 15 views
11

Sto creando una tabella html. Voglio nascondere la riga della tabella. Sto inserendo gli attributi runat=server e id per la particolare riga, ma la riga ha il codice lato client in esso simile al seguente codice.non sono supportati in questo contesto nel controllo asp.net

<% if ((strFlag=="d") || (strApprvdFlag=="y")) {%> 

Dopo aver chiamato questa linea, ho ricevuto questo errore.

I blocchi di codice non sono supportati in questo contesto nel controllo asp.net.

Qui di seguito è il mio codice di esempio:

<table> 
    <tr colspan="4" ID="trMedical" scriptrunat="server"> 
    <td style="WIDTH: 45px;HEIGHT: 12px" align="left" class="LabelTaxText" width="45"><b>G&nbsp; 
     </b> 
    </td> 
    <td style="WIDTH: 182px;HEIGHT: 12px" class="LabelTaxText" align="left" width="182" 
     colSpan="2">Medical 
    </td> 
    <td style="WIDTH: 81px; HEIGHT: 12px" align="right" class="LabelTaxText" width="81"> 
     <asp:textbox onchange="onChangeFlag(),intOnly(this);" onkeyup="intOnly(this);" onkeypress="return CheckNumericWithOutDecimals(event)" 
      id="TxtMedical" tabIndex="24" runat="server" Width="96px" MaxLength="12" style="Z-INDEX: 0"></asp:textbox> 
    </td> 
    <% if ((strFlag=="d") || (strApprvdFlag=="y")) {%> 
     <td class="LabelTaxText" style="WIDTH: 107px; HEIGHT: 12px" align="right" width="107"> 
      <asp:textbox onchange="onChangeFlag(),intOnly(this);" onkeyup="intOnly(this);" onkeypress="return CheckNumericWithOutDecimals(event)" id="TxtMedicalProof" tabIndex="24"  onblur="charAlert(TxtMedical,TxtMedicalProof)" runat="server" MaxLength="12" Width="96px"> 
      </asp:textbox> 
     </td> 
    <% } %> 
    <% if (strApprvdFlag=="y") {%> 
     <td class="LabelTaxText" style="WIDTH: 68px; HEIGHT: 24px" align="right" width="68"> 
      <asp:textbox id="TxtMedicalApproved" tabIndex="24" runat="server" MaxLength="12" Width="96px"></asp:textbox> 
     </td> 
     <td class="LabelTaxText" style="WIDTH: 43px">&nbsp; 
      <asp:Label ID="lblMedicalRemarks" Runat="server"></asp:Label> 
     </td> 
    <% } %> 
    </tr> 
</table> 

risposta

17

Quando si aggiunge un runat='server' a un controllo HTML si modificano i blocchi di rendering e di codice non sono supportate all'interno. Quindi, se ci sono le proprietà è necessario modificare probabilmente dovete invece di fare questo (stile di classe?):

<tr id='myrow' runat='server'> 
    <td> 
     your code here 
    </td> 
</tr> 

fare qualcosa di simile:

<tr id='myrow' <%= GetRowProperties() %>> 
    <td> 
     your code here 
    </td> 
</tr> 

Nota:runat='server' rimossi dal tr. Quindi nel codebehind puoi fare qualcosa del genere:

protected string GetRowProperties() 
{ 
    return "class='myclass'"; // something like this 
} 
+0

hi grazie mille ... ho ricevuto questo errore I tag del server non possono contenere i costrutti <% ... %>. – mathirengasamy

+1

La tua riga NON può avere runat = 'server' al suo interno. – Keltex

+0

ma ho bisogno della proprietà del server runat ... poi come posso nascondere la riga nel codice dietro a qualsiasi idea – mathirengasamy

5

È possibile utilizzare l'associazione dati per controllare la visibilità di un controllo. Questo dovrebbe risolvere il tuo problema.

<tr runat="server"> 

    some content... 

    <asp:PlaceHolder runat="server" 
     visible='<%# (strFlag=="d") || (strApprvdFlag=="y") %>'> 

     This content will only be rendered if strFlag is "d" or "y" 

    </asp:PlaceHolder> 

    more content... 

</tr> 

del metodo OnLoad, è necessario chiamare il DataBind() metodo sia il segnaposto, o di qualsiasi controllo che lo contiene, come il TR o addirittura Pagina:

protected override void OnLoad(EventArgs e) { 
    base.OnLoad(e); 

    Page.DataBind(); 
} 
+0

ho inserito il segnaposto nella riga della tabella ... ma ho ricevuto questo errore System.Web.UI.HtmlControls.HtmlTableCellCollection deve contenere elementi di tipo 'System.Web.UI.HtmlControls.HtmlTableCell'. 'asp: PlaceHolder' è di tipo 'System.Web.UI.WebControls.PlaceHolder'. – mathirengasamy

+0

Non ho mai provato a usare questa tecnica in un . Hai davvero bisogno che il TR sia un controllo lato server? –

Problemi correlati