0
我試圖做一箇中繼,當你在已經登錄成爲會員是纔可見裏面面板,但問題是不會出現面板,我不知道是什麼我做錯了。直放站內部沒有顯示,爲什麼?
如果您有時間,請查看我的代碼,非常感謝。
FRONT:
<%@ Page Title="" Language="C#" MasterPageFile="~/Front/Front.master" AutoEventWireup="true" CodeFile="About.aspx.cs" Inherits="Front_About" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Repeater ID="Repeater_About" runat="server" DataSourceID="SqlDataSource1" OnItemCommand="Repeater_About_ItemCommand">
<ItemTemplate>
<asp:Panel ID="About_Edit" runat="server" Visible="false">
<a href="#">LINK</a>
</asp:Panel>
<div id="about_box">
<h1><%#Eval("about_title") %></h1>
<p><%#Eval("about_info") %></p>
</div>
<img id="about_img" src="../img/<%#Eval("about_picture")%>" />
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT * FROM [about]"></asp:SqlDataSource>
</asp:Content>
後臺代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Front_About : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Repeater_About_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (Session["user_id"] != null)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Panel About_Edit = (Panel)e.Item.FindControl("About_Edit");
About_Edit.Visible = true;
}
}
}
}
當您顯示/隱藏所有物品時,爲什麼在中繼器內部有面板?只需根據用戶的授權顯示/隱藏整個中繼器,並完全移除面板。 – Servy
我只是想隱藏/顯示面板,以獲得額外的信息,稍後將會被評估。 因爲無論何時註銷,它仍會顯示一些非會員可以看到的細節。 我可以選擇做2個獨立的中繼器,但我只是認爲它會對1箇中繼器內的單個面板產生更多效應,但這比我預期的要複雜一些。 –
什麼應該導致「OnItemCommand」觸發?我建議使用「OnItemDataBound」,而不是綁定數據時工作。 –