У меня есть список данных и элемент управления гиперссылкой, который содержит URL.Пользователь создает этот список данных через веб-сайт администратора, и не все гиперссылки содержат ссылку на них.Вопрос в том, как скрыть ссылку, у которой нет URL-адреса, в поле базы данных.
код для списка данных:
<asp:DataList ID="dtlPromoEvents" runat="server" CellPadding="2" CellSpacing="2" RepeatColumns="1" RepeatDirection="Vertical" RepeatLayout="Table" >
<ItemTemplate>
<asp:Label ID="lblPromoHeading" runat="server" Text='<%# Eval("eventHeading") %>' Font-Size="12pt" ForeColor="#FFFF00" />
<br />
<br />
<asp:Label ID="promoDate" runat="server" Text='<%# Eval("eventDate", "{0:D}") %>' Font-Size="11pt" ForeColor="#33FF00" /> <span style="color: #33ff00; font-size: 12pt">@</span> <asp:Label ID="lblPromoTime" runat="server" Text='<%# Eval("startTime", "{0:t}") %>' Font-Size="11pt" ForeColor="#33FF00" />
<br />
<br />
<asp:Label ID="lblPromoDetails" runat="server" Text='<%# Eval("eventDetails") %>' Font-Size="11pt" />
<br />
<br />
<br />
<asp:HyperLink ID="eventLink" Text="Check this out!" CssClass="linkEvent" Visible="false" runat="server" Target="_blank" ToolTip="click to go check out what's happening!" NavigateUrl='<%# Eval("eventLink") %>' />
<br />
<br />
<br />
<hr style="width: 480px; height: 1px; background-color: #ff9900; border-color: #ff9900" />
<br />
</ItemTemplate>
</asp:DataList>
В коде, указанном ниже, я установил источник данных с кодоми теперь я озадачен тем, как добраться до элементов и контролировать видимость ссылки «проверить это», основываясь на том, есть ли в поле db ссылка или нет.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dtlPromoEvents.DataSource = LoadEvents();
//filter through the events and turn on visibility for the events that have a live link.
dtlPromoEvents.DataBind();
}
}
public static DataSet LoadEvents()
{
DataSet eventInfo = new DataSet();
string connectionString = ConfigurationManager.AppSettings["ConnectBeerGeeksDb"];
using (SqlConnection selectConnInfo = new SqlConnection(connectionString))
{
SqlDataAdapter adapterInfo = new SqlDataAdapter("SELECT [eventDate], [startTime], [eventHeading], [eventDetails], [eventLink] FROM [promoEvent] WHERE (eventDate + 1 > GETDATE()) ORDER BY eventDate", selectConnInfo);
selectConnInfo.Open();
eventInfo.Clear();
adapterInfo.Fill(eventInfo);
selectConnInfo.Close();
}
return eventInfo;
}
Будем благодарны за любые предложения.
Спасибо,
rjsteward
Добавление уточненного кода, который работает по этому URL: [http://beergeekspub.com/events.aspx][1]
protected void dtlPromoEvents_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
// Retrieve the Hyperlink control in the current DataListItem.
HyperLink eLink = (HyperLink)e.Item.FindControl("eventLink");
// Check if a URL exists, if not then hide the control
if (string.IsNullOrEmpty(eLink.NavigateUrl))
{
eLink.Visible =false;
}
}
}
также данные загрузки страницы привязывают к списку данных -
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dtlPromoEvents.DataSource = LoadEvents();
dtlPromoEvents.DataBind();
}
}