2009-09-29 2 views
2

Я предполагаю, что это довольно распространенная проблема, но пока я не нашел элегантного решения.Listview/DetailsView: Скрыть пустое поле

У меня есть несколько экземпляров, где у меня есть элемент управления ListView или DetailsView, связанный с SQL Server SProc. Проблема заключается в том, что существует множество случаев, когда, когда столбец Null, я хочу отображать что-то другое в пользовательском интерфейсе. Типичным примером будет то, что у меня есть столбец URL, который отображается как LinkButton (в ListViews) или как HyperLinkField (в DetailsViews) - при возврате URL-адреса Null я обрабатываю ссылки без атрибута src. В идеале я хочу ничего не показывать в этой области в таком сценарии.

В каждом из этих случаев, когда возвращается значение null, как я могу пропустить/изменить рендеринг этого элемента?

Заранее спасибо.

Обновление: у меня не было возможности попробовать их, но все полезные предложения. Я думаю, что я хотел Рикс ответить на лучшее, но опять же благодаря другим ...

ответ

2

Markup:

<asp:HyperLink id="whatever" runat="server" 
    NavigateURL='<%# Eval("url") %>' Visible='<%# IsVisible(Eval("url")) %>' /> 

Код позади:

protected bool IsVisible(object obj) 
{ 
    bool result = false; 

    string url = (string)obj; 
    if(!string.IsNullOrEmpty(url)) 
    { 
      result = true; 
    } 

    return result; 

} 
1

в шаблоне связываются также Видимость

<asp:HyperLink ... NavigateURL=<%# Eval("url") %> Visible=<%# Eval("url") != null %> /> 

Предупреждение: не испытано, также может быть

<asp:HyperLink ... NavigateURL=<%# Eval("url") %> Visible=<%# Eval("url") != DBNull.Value %> /> 
1

Я полагаю, вы могли бы либо создать метод в вашем коде, который принимает значение в качестве параметра, и возвращает ссылку, если она не равна нулю. Или вы можете нажать на связанное с данными событие Listview, проверить значение и скрыть элемент управления, если оно равно null. Ни очень элегантные решения, но я думаю, это зависит от вас, чтобы решить. :)

 Смежные вопросы

  • Нет связанных вопросов^_^