2009-11-09 27 views
7

tôi đã cố gắng này, nhưng không thể vượt qua: -Làm thế nào để hiển thị/ẩn bảng hàng <tr> trong trang ascx

mã sau

protected HtmlTableRow trComment; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    //Show/Hide table rows (TR) 
    trComment.Visible = ConfigUtil.DisplaySummaryComment; 
} 

trang ascx

<tr id="trComment" runat="server"> 
    <td style="vertical-align:top; text-align:left;"> 
     <%#ConfigUtil.FieldLabels["PIComments"]%> 
     : 
    </td> 
    <td> 
     <%= Test.Comment %> 
    </td> 
</tr> 

Trả lời

13

của bạn hoặc mã iginal không hoạt động, không phải vì nó không chính xác, nhưng vì bạn có thể có nhiều địa điểm hơn với trComment (trong trường hợp này nên báo lỗi) hoặc vì mã hiện tại của bạn nằm bên trong một mẫu nào đó (trong một số GridView, Repeater). Loại thứ hai là rất có thể, bởi vì bạn sử dụng một câu lệnh dữ liệu (<%#), thường được đặt trong một mẫu điều khiển dữ liệu (nhưng không nhất thiết). Một cách để giải quyết điều này một cách thống nhất và dễ dàng (nhiều cách tồn tại và tốt nhất là không sử dụng bảng chữ) là sử dụng asp:PlaceHolder, không để lại "dấu vết" HTML, nhưng có thể được sử dụng để chuyển đổi bất kỳ khối nào mã HTML/ASP.NET:

<!-- toggle through OnLoad (can use ID as well) --> 
<asp:PlaceHolder runat="server" OnLoad="MakeVisibleOrNot"> 
    <tr> 
     ... 
    </ 
</asp:PlaceHolder> 

trong mã đằng sau

protected void MakeVisibleOrNot(object sender, EventArgs e) 
{ 
    ((Control) sender).Visible = ConfigUtil.DisplaySummaryComment; 
} 
+1

Giải pháp tuyệt vời. Cảm ơn – Jango

2

Thử

trComment.Style.Add("display", "none"); 
+0

'cái .Visible' trong ASP.NET ngăn vẽ kiểm soát hoàn toàn. Nếu điều đó không có tác dụng, 'display: none;' thì không. – Abel

4
<tr id="trComment" runat="server"> 
    <td> 

    </td> 
</tr> 

sau đó, trong phương pháp Page_Load() của bạn tìm thấy nguyên tố của bạn và tầm nhìn thiết lập đúng hay f alse như dưới đây

protected void Page_Load(object sender, EventArgs e) 
{ 
    trComment.Visible = false; //or trComment.Visible = true; as you wish 
} 

Hy vọng điều này sẽ giúp bạn

0

này cũng làm việc với không có mã số đằng sau

     <asp:PlaceHolder runat="server" Visible ='<%# Convert.ToBoolean(Session["sess_isArtist"].ToString() == "1" || Session["sess_isBeneficiary"].ToString() == "1" ? "true": "false") %>'> 
<tr> 
    ... 
</ 
         </asp:PlaceHolder> 
Các vấn đề liên quan