在数据绑定控件中操纵数据绑定值? ASP.NET Webforms

时间:2010-08-26 16:22:48

标签: c# asp.net data-binding webforms controls

我正在使用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}   %>

1 个答案:

答案 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)联系起来。