2011-09-08 82 views
4

我已經讓自己真正與Web用戶控件綁定,並且改變了父ASPX中的<div>的可見性。如何使用c改變用戶控件的div可見性#

我有一個購物車,它位於用戶控件內,並且在其中一個包含UC的頁面中,有一個狀態<div>,顯示購物車內容的摘要。如果購物車是空的,則顯示不同的<div>。在UC

if (varCartStatus) 
{ 
    cartStatusTrue.Visible = true; 
    cartStatusFalse.Visible = false; 
else 
{ 
    cartStatusTrue.Visible = false; 
    cartStatusFalse.Visible = true; 
} 

我只在此刻得到

代碼爲 「cartStatusTrue」並不在當前的背景下存在。 'cartStatusFalse'在當前上下文中不存在。

如何獲得UC更改父ASPX中<div>的可見性?

對不起,我很新的.NET和C#和我完全失去了(!再次)

+0

我會承擔cartStatusTrue和cartStatusFlase不是控制。你似乎使用它們作爲變量。 編輯:如果它們是對照,都位於一個父控制,如面板? – KreepN

回答

6

由於控制在頁面存在,而不是控制,你必須要找到他們的頁面:

this.Page.FindControl("cartStatusTrue").Visible = varCartStatus; 
this.Page.FindControl("cartStatusFalse").Visible = !varCartStatus; 

或類似的,如果他們是在一個父控件:

this.Parent.FindControl("cartStatusTrue").Visible = varCartStatus; 
this.Parent.FindControl("cartStatusFalse").Visible = !varCartStatus; 

當然,也請確保您的div都有runat="server"ID="cartStatusTrue"ID="cartStatusFalse"

編輯:另一個可能是設計改進的方法是將隱藏div的工作轉移到aspx頁面。您可以將varCartStatus作爲控件的屬性公開,並從aspx頁面讀取該屬性。在您aspx.cs:

this.cartStatusTrue.Visible = this.CartControl.CartStatus; 
this.cartStatusFalse.Visible = !this.CartControl.CartStatus; 
1

您可以使用類似:該用戶控件的

this.Parent.FindControl("cartStatusTrue").Visible = true; 
    this.Parent.FindControl("cartStatusFalse").Visible = false; 

這是因爲,在「分區」中的「家長」的存在(即頁)。

希望這有助於!

1

嗨如gilly3所述,它應該沒問題。如果你想生成div但不顯示div,你可以使用Attributes.Add(「style」,「visibility:hiddden」)。

0

由於有兩個可能的位置:

  1. 您不必在,你是定位在包含頁 和控制
  2. 你可以在其他頁面在將來使用

你不應該在你正在瀏覽的頁面上拼寫。我的建議是將您的購物車控件分成兩個控件 - 一個用於呈現購物車,另一個用於顯示狀態信息。您的頁面含有然後,使用這兩個控件,將它們放置在其認爲適當,並與他們不過它需要消耗事件,初始化它們相互作用等

0

一種方式是通過公共屬性來公開的控件或創建這可以讓你得到&設置能見度值頁面上的公共方法。然後,用戶控制將需要一個方法來操縱暴露字段。

在頁面代碼文件中添加以下方法

public void CartStatusTrueVisible(bool Visible) 
    { 
     cartStatusTrue.Visible = Visible; 
    } 

    public void CartStatusFalseVisible(bool Visible) 
    { 
     cartStatusFalse.Visible = Visible; 
    } 

在控制代碼文件添加這些方法

public void CartStatusTrueVisible(bool Visible) 
    { 
     ((_Default)Page).CartStatusTrueVisible(Visible); 
    } 

    public void CartStatusFalseVisible(bool Visible) 
    { 
     ((_Default)Page).CartStatusFalseVisible(Visible); 
    } 
相關問題