2009-12-04 4 views
0

У меня есть поле шаблона в gridview с меткой, текст которой я хочу изменить в зависимости от оператора if. Конечно, это не работает, но это то, чего я хочу достичь.Написание кода в MArkup

<%if Eval("Address") != ""%> 
    <%{ %> 
     <ItemTemplate> 
      <asp:Label ID="Label18" nowrap="nowrap" runat="server" Text='<%# Eval("Address") + "<br>" + Eval("City") + "," + Eval("State") + " " + Eval("Zip1") + " " + Eval("Zip2") %>'></asp:Label> 
     </ItemTemplate> 
    <%} %> 

Как я могу это достичь?

ответ

0

Как насчет этого?

<ItemTemplate> 
<asp:Label ID="Label18" nowrap="nowrap" runat="server" Text='<%# Eval("Address") != String.Empty ? Eval("Address") + "<br>" + Eval("City") + "," + Eval("State") + " " + Eval("Zip1") + " " + Eval("Zip2") : String.Empty %>'></asp:Label> 
</ItemTemplate> 
+0

Мне очень нравится эта идея. Но он все еще проходит через код. Я попробовал String.IsnullorEmpty, но это не сработало – Eric

+0

Я никогда не видел этот подход, но как я могу его использовать, если значение равно null? – Eric

+0

String.IsNullOrEmpty (Eval («Адрес»)) –

0

Вы могли бы иметь DisplayAddress собственности на вашем источнике данных - что либо Address конкатенации, что вы хотите или нулевой/пустой.

Не зная, как привязана ваша сетка, я не могу посоветовать, как это сделать.

0

Подумайте о том, заполнители в вашем ItemTemplate:

<ItemTemplate> 
    <asp:PlaceHolder ID="phAddress" runat="server" /> 
</ItemTemplate> 

Для вашего GridView, есть OnRowDataBound событие, где вы можете построить новый asp:Label или простой HTML. Используйте e.Row.DataItem, чтобы найти требуемые данные адреса.

Затем вы можете присвоить эту метку или строку HTML phAddress.

This related answer may help.