我有一个连接到数据源(数据表对象)的数据中继器。我需要在某些条件下更改某些列的前端输出。最有效的方法是什么?
我目前正在尝试创建格式化输出并将其分配给另一个数据表并将其用作数据源,但它似乎过于复杂且难以维护。
是否有更简单的方法来操作数据源的列值?我需要能够检查源的上一行和下一行,因为这是某些列值的基础。
我有一个连接到数据源(数据表对象)的数据中继器。我需要在某些条件下更改某些列的前端输出。最有效的方法是什么?
我目前正在尝试创建格式化输出并将其分配给另一个数据表并将其用作数据源,但它似乎过于复杂且难以维护。
是否有更简单的方法来操作数据源的列值?我需要能够检查源的上一行和下一行,因为这是某些列值的基础。
如果您正在谈论简单的操作,则该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"));
}
}
我认为没有一种方法可以像现在这样使用特殊逻辑轻松地在客户端做你想做的事情。如果您从数据库中获取数据,您可能会在数据库端进行所有数据操作并将其透明地传递到前端。