[ASP.NET] Vise/skjule placeholder i datalist
Hej,Jeg prøver at vise nogle db records i en datalist. Hvis længden af et et specifikt felt i databasen er større end 0 skal der sættes et "Læs mere" link ind i den tilhørende item i datalisten, ellers skal dette link "Læs mere" ikke vises. Jeg kan dog ikke hitte ud af hvordan jeg lige griber det an. Har på fornemmelsen at jeg har stirret mig helt blind på problemet, så her følger koden:
Usercontrol:
<code>
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="weblog.ascx.cs" Inherits="dda.modules.weblog.weblog" %>
<asp:Datalist Width="100%" ID="dtNews" Runat="server">
<div class="ContentPaneContent">
<%#((DataRowView)Container.DataItem)["teaser"]%>
</div>
<asp:PlaceHolder ID="<%#((DataRowView)Container.DataItem)["id"]%>" Runat="server">
<div class="ContentPaneUpperFooter">
<%#(ShowMore(Convert.ToInt32(((DataRowView)Container.DataItem)["contentlength"]),Convert.ToString(((DataRowView)Container.DataItem)["id"])))%>
</div>
</asp:PlaceHolder>
</asp:Datalist>
</code>
Code-behind:
<code>
namespace dda.modules.weblog
{
using System;
using System.Configuration;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for weblog.
/// </summary>
public class weblog : PortalModuleControl
{
protected DataList dtNews;
protected Label lblStatus;
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
dtNews.DataSource = GetNews();
dtNews.DataBind();
}
}
public bool ShowMore(int length, string id)
{
bool show = false;
if (length > 0)
{
//show placeholder.id = id
show = true;
}
return show;
}
public DataSet GetNews()
{
string strSQL = "SELECT id, headline,teaser,LENGTH(content) as contentlength, category FROM table";
DataSet dtNews = new DataSet();
try
{
OdbcConnection objConn = new OdbcConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
OdbcDataAdapter objDa = new OdbcDataAdapter();
objDa.SelectCommand = new OdbcCommand(strSQL, objConn);
objDa.Fill(dtNews, "News");
}
catch(Exception e)
{
lblStatus.Text = e.ToString();
}
return dtNews;
}
}
}
</code>
Hvis ShowMore er sand skal linket (eller dvs. hele PlaceHolderen) vises, ellers ikke. Hvordan gør jeg det?
På forhånd tak.
