13

I'm creating one html table. I want to hide the table row. I'm putting the attributes runat=server and id for the particular row, but the row has client side code in it similar to the following code.

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

After call this line, I got this error.

Code blocks are not supported in this context in asp.net control.

Below is my sample code:

<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>

2 Answers 2

18

When you add a runat='server' to an HTML control you change the rendering and code blocks aren't supported inside. So if there are properties you need to change (style? class?) you probably have to instead of doing this:

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

Do something like this:

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

Note: runat='server' removed from tr. Then in your codebehind you can do something like this:

protected string GetRowProperties()
{
    return "class='myclass'"; // something like this
}
Sign up to request clarification or add additional context in comments.

6 Comments

hi thank you so much..now i got this error Server tags cannot contain <% ... %> constructs.
Your row CANNOT have runat='server' in it.
but i need runat server property..then how can i hide the row in code behind..give any idea
You can wrap it in an <asp:placeholder>
Why can't you have runat='server' at a row?
|
6

You can use data binding to control the visibility of a control. That should solve your problem.

<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>

On your OnLoad method, you will need to call the DataBind() method to either the PlaceHolder, or any control that contains it, like the tr or even Page:

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

    Page.DataBind();
}

2 Comments

i put the place holder inside the table row... but i got this error System.Web.UI.HtmlControls.HtmlTableCellCollection must have items of type 'System.Web.UI.HtmlControls.HtmlTableCell'. 'asp:PlaceHolder' is of type 'System.Web.UI.WebControls.PlaceHolder'.
I never tried to use this technique into a <tr runat="server">. Do you really need the TR to be a server-side control?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.