Я пытаюсь поставить * рядом с именем на основе условия.
Мой код:
<asp:Label ID="lblOne" runat="server" Text= '<%# Eval("name") + ((Eval("StatusId").Equals(0) && Eval("assignfilename") == null) ? " *" : "") %>' > </asp:Label>
Спасибо
BB
Я пытаюсь поставить * рядом с именем на основе условия.
Мой код:
<asp:Label ID="lblOne" runat="server" Text= '<%# Eval("name") + ((Eval("StatusId").Equals(0) && Eval("assignfilename") == null) ? " *" : "") %>' > </asp:Label>
Спасибо
BB
Если вы выходите за пределы того, что вы можете легко обработать с помощью встроенного кода, вы всегда можете вместо этого написать функцию. Затем вы можете сделать что-то вроде:
<asp:Label ID="lblOne" runat="server" Text= '<%# EmitSomeText(Eval("name"), Eval("StatusId"), Eval("assignfilename")) %>' />
Это позволяет разбить сложное выражение на столько строк, сколько необходимо, что может быть немного менее неловко. Вы можете использовать функцию в своем CodeBehind или любом другом классе.
Если вы привязываетесь к классу, к которому у вас есть доступ, вы можете добавить свойство только для чтения. Затем вы можете сделать что-то вроде Eval("MyNewProperty").
Я использую это для демонстрации форматирования, которое мне нужно повторно использовать. Например, Customer.CustomerFullName может возвращать фамилию, сначала разделенную запятой (разумно обрабатывая ситуации, когда одно, другое или оба отсутствуют) плюс необязательный заголовок, поскольку, возможно, мои клиенты — медицинские работники, а некоторые из них имеют докторскую и докторскую степень.
Я не совсем знаком со встроенными кодами, и ваш код кажется немного сложным. Но мне также нужно объединить Eval("запись") и текст. Итак, чтобы ответить на вопрос о том, как конкатенировать, у меня сработал амперсанд.
'<%# Eval("name") & " *" %>'
надеюсь, это поможет кому-нибудь.
Для простых одноразовых сценариев функция кода программной части работает нормально.
Вы также можете захотеть закодировать их как свойство в базовом объекте.
Например, если сгенерированный текст будет использоваться более чем в одном экземпляре, вам потребуется кодировать функцию с помощью Eval несколько раз в разных формах или элементах управления.
Я бы создал свойство для объекта данных, например. NameWithStatusStar, тогда ваша метка может быть привязана непосредственно к свойству с кодом внутри Eval("NameWithStatusStar")
Это более описательно и повторно используемо, чем ряд выражений, плюс его легче изменить (например, добавить другое поле, изменить формулу и т. д.).
Вы можете сделать это следующим образом:
Text='<%#"CustomText "+Eval("Name")%>'
Text='<%#String.Concat(Eval("UserId"), Eval("Username")) %>'
Это сработало для меня в моем проекте. Нашел здесь:
Объединить текст с помощью Eval
Text='<%# string.Concat(Eval("FirstName"), " ", Eval("LastName"))%>'
Это сработало для меня в моем проекте. Нашел здесь:
Объединить текст с помощью Eval