我有一個購物車,我正在開發作爲一個Web用戶控件。 ucCart.ascx將出現在三個不同的頁面上,我希望購物車的功能根據顯示的頁面而改變。例如,當客戶確認他們的訂單時,我不想看到刪除購物車項目按鈕或重新計算購物車按鈕。如何切換中繼器中控件的可見性?
這能在代碼編程方式落後?我寧願不使用JavaScript。我天真地試圖使用cartDelete.Visible = false;
,但這根本不受歡迎!
我有一個購物車,我正在開發作爲一個Web用戶控件。 ucCart.ascx將出現在三個不同的頁面上,我希望購物車的功能根據顯示的頁面而改變。例如,當客戶確認他們的訂單時,我不想看到刪除購物車項目按鈕或重新計算購物車按鈕。如何切換中繼器中控件的可見性?
這能在代碼編程方式落後?我寧願不使用JavaScript。我天真地試圖使用cartDelete.Visible = false;
,但這根本不受歡迎!
你需要去這些控件的引用,並調用設置Visible屬性爲false;像這樣的僞代碼;
ShoppingCartControlVariable.FinControl( 「idOfTheControlYouWantToHide」)可見=假。
添加示例代碼來演示如何做到這一點:
假設你有一個這樣的中繼器(注意OnItemCreated處理程序):
<asp:Repeater ID="myrepeater" runat="server" OnItemCreated="myrepeater_ItemCreated">
<HeaderTemplate>
<table>
<thead>
<th>
Link
</th>
<th>
Button
</th>
</thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:HyperLink ID="link" runat="server" Text='<%#Eval("Text")%>' NavigateUrl='<%#Eval("Url")%>'></asp:HyperLink>
</td>
<td>
<asp:Button ID="btnDelete" runat="server" Text="Delete" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody> </table>
</FooterTemplate>
</asp:Repeater>
您可以隱藏/在轉發器的行顯示內容如下:
protected void myrepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item && (boolean_condition_that_on_which_you_will_decide_what_to_show_and_what_to_hide))
{
e.Item.FindControl("link").Visible = false;
}
}
例如,如果我想隱藏在每一行的所有鏈接元素和剛剛離開的刪除按鈕,我可以這樣做:
protected void myrepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
{
e.Item.FindControl("btnDelete").Visible = false;
}
}
同時會產生這樣的:
僅供參考,我用來填充我的中繼器的代碼是這樣的:
List<CartItem> items = new List<CartItem>();
for (int i = 0; i < 10; i++)
{
CartItem t = new CartItem();
t.Text="Item " +i;
t.Url="http://www."+i+".com";
items.Add(t);
}
myrepeater.DataSource = items;
myrepeater.DataBind();
這很好地在中繼器外面工作(對於'確認'按鈕),但不在中繼器內。 – ComfortablyNumb
@ComfortablyNumb然後你需要做的是處理OnItemCreated事件。我會在一分鐘後發佈一個示例項目。 – Icarus
我覺得你可以做一個名爲「隱藏控制」這個用戶控件內公共職能,並呼籲在你想要的頁面,這個功能該功能隱藏控件,也可以在用戶控件和頁面進行布爾屬性可以將其設置爲false,然後您可以使用此標誌來隱藏您的用戶控件中的控件。
您是否試圖隱藏用戶控件或用戶控件中的按鈕? –
用戶控件內的中繼器內的按鈕。 – ComfortablyNumb