Я понимаю, что это очень старый вопрос, но я хотел бы добавить, что, возможно, лучший способ решения этой проблемы - это больше на уровне базы данных, и да - я знаю, что в OP не указан тип источника данных.
Я просто собираюсь предположить (да - задница для вас и меня), что текущий используемый язык - по крайней мере Transact SQL.
С этой целью я склонен использовать источник данных для создания составных полей. В случае адреса ISNULL
с удовольствием проверит, какие поля используются, и вернет значение по умолчанию, если обнаружено поле NULL. Вдобавок к этому, символы (ы) разделителя могут быть включены, чтобы учесть разрывы строк в целевом выходном носителе. Одним из вариантов является использование запятой + один пробел в качестве разделителя ', '
.
SELECT
ISNULL(src.address1 + ', ', '') +
ISNULL(src.address2 + ', ', '') +
ISNULL(src.address3 + ', ', '') +
ISNULL(src.address4 + ', ', '') +
ISNULL(src.postalcode, '') AS CompoundAddress
...
Это работает при использовании NULL
против самого себя - добавление к NULL
возвращает NULL
, поэтому возвращаемое значение будет либо содержать нашу запятую + пробел, либо будет возвращать пустую строку.
Нечто подобное можно сделать, чтобы «обмануть» Microsoft Access для создания вашего адресного поля ...
SELECT
(src.address1 + ', ') &
(src.address2 + ', ') &
(src.address3 + ', ') &
(src.address4 + ', ') &
(src.postalcode) As CompoundAddress
...
В этом случае амперсанд преобразует NULL
в пустую строку, но то же самое относится и к добавлению строки в потенциально NULL
поле.
Итак, теперь мы можем правильно вывести наш адрес в HTML ...
<div id="results">
<asp:Repeater ID="repeaterResults" runat="server">
<ItemTemplate>
Company: <strong><%#Eval("CompanyName") %></strong><br />
Contact Name: <strong><%#Eval("ContactName") %></strong><br />
Address: <strong><%#Eval("CompoundAddress").ToString().Replace(", ", "<br />") %></strong><br />