если еще заявление в форме - PullRequest
0 голосов
/ 23 января 2010

У меня есть FormView, он отображает поля из базы данных SQLServer, но также много статического текста, определенного для значения базы данных, которое я получаю. Я не знаю, можно ли это сделать в коде и поместить все это в функцию. Я положил это в моем виде

<ItemTemplate>

<% If Eval("Feature1") = "Yes" Then %>

 <%# Eval("Username") %> <p>A lot of text</p>

 <% elseIf Eval("Feature1") = "No" Then %>

 <%# Eval("Username") %>
<p>A lot of different text</p>

 <% End If %>

</ItemTemplate>

Если я сделаю код выше, я получу сообщение об ошибке:

Методы привязки данных, такие как Eval (), XPath () и Bind (), могут быть только используется в контексте элемента управления с привязкой к данным. Может ли это быть сделано в течение форма просмотра?

Большое спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 20 июля 2012

Вы можете использовать DataBinder.Eval следующим образом:

<% if (DataBinder.Eval(formview.DataItem, "First") == "Yes") { %>
    <p>A lot of text</p>
<% } else { %>
    <p>A lot of different text</p>
<% } %>

Если у вас есть какой-либо постбэк, вы должны где-то сохранить DataItem и использовать его в качестве параметра DataBinder.Eval, потому что он становится нулевым.

0 голосов
/ 23 января 2010

Ваша логика if должна быть в коде позади, в событии с привязкой к данным вашего элемента управления.

Каждая строка будет запускать это событие, и затем вы сможете редактировать, как строка должна выглядеть на основе данных.

protected void FormView1_DataBound(object sender, EventArgs e)
{

}
...