在转发器中自定义数据源的输出?

时间:2011-10-03 18:39:46

标签: asp.net data-binding datatable datasource datarepeater

我有一个连接数据源(数据表对象)的Data Repeater。我需要在某些条件下更改某些列的前端输出。最有效的方法是什么?

我目前正在尝试创建格式化输出并将其分配给另一个数据表并将其用作数据源,但它看起来过于复杂,而且难以维护。

是否有更简单的方法来操纵数据源的列值?我需要能够检查源的上一行和下一行,因为这是某些列值的基础。

2 个答案:

答案 0 :(得分:2)

如果您正在谈论简单操作,DataBinder.Eval方法接受格式字符串:

<%#Eval("SomeMoneyColumn", "{0:C}")%>

如果格式字符串不够用,您可以在代码隐藏中创建一个方法来处理格式,如下所示:

<%#FormatData(Eval("SomeColumn"))%>

在代码隐藏中:

protected string FormatData(object data)
{
    return String.Format("My name is {0}", data);
}

您也可以使用ItemDataBound事件。使用此技术,如果您的操作涉及绑定到转发器的其他数据,您仍然可以访问数据源对象。

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Label lblCtrl = e.Item.FindControl("SomeControl") as Label;
    if (lblCtrl != null)
    {
        lblCtrl.Text = String.Format("My name is {0}", DataBinder.Eval(e.Item.DataItem, "SomeColumn"));
    }
}

答案 1 :(得分:0)

我不认为有一种方法可以在客户端轻松地使用你现在正在做的特殊逻辑。如果要从数据库获取数据,则可以在数据库端执行所有数据操作,并将其透明地传递到前端。