我正在使用ASP.NET Webforms中的DataBound控件中的以下标记。
<asp:TemplateField HeaderText="DomainID">
<ItemTemplate>
<% for (int i = 0; i < 10; i++)
{%>
<%#Eval("DomainID"); %>
<% ++i;
} %>
</ItemTemplate>
</asp:TemplateField>
是否可以在<%#Eval("DomainID"); %>
部分内实际编写代码块,例如:
<%# var x = Eval("DomainID"); if ((int)x)>0){//print this} %>
答案 0 :(得分:2)
当它开始变得复杂时,我总是建议改变你的结构以使用服务器端控件,并通过该控件的OnDataBinding
事件进行绑定。
示例:
<asp:TemplateField HeaderText="DomainID">
<ItemTemplate>
<asp:Literal ID="ltDomainID" runat="server"
OnDataBinding="ltDomainID_DataBinding" />
</ItemTemplate>
然后在您的代码绑定中实现OnDataBinding
:
protected void ltDomainID_DataBinding(object sender, System.EventArgs e)
{
Literal lt = (Literal)(sender);
for (int i = 0; i < 10; i++)
{
var x = (int)(Eval("DomainID"));
if (x > 0)
{
lt.Text += x.ToString();
}
++i;
}
}
我可能会让你的逻辑有些混乱,但这应该给你基本的想法。实现逻辑服务器端使aspx更加清晰,它将逻辑直接与输出控件(在本例中为Literal
)联系起来。