我一直在寻找,我无法知道这是否可能。我所拥有的是一个按钮(在转发器内),该按钮的文本由数据集中返回的几个值决定,如下所示:
Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber") + "|" + DataBinder.Eval(Container.DataItem, "type" )%>'
但是我希望能够做的是根据eventnumber中是否有值来切换分配的字段。像这样:
Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber")!=""?DataBinder.Eval(Container.DataItem, "eventnumber"):DataBinder.Eval(Container.DataItem, "productid") + "|" + DataBinder.Eval(Container.DataItem, "type" )%>'
但我似乎无法让它发挥作用。 (在这种情况下,我没有错误,但文本是空的)
有人可以帮忙吗?
谢谢你, 克雷格
答案 0 :(得分:0)
最简单,最易读的方法是将转发器连接到事件ItemDataBound
并在那里处理。
private void repeater_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var item = (YourType)e.Item.DataItem;
var label = (Label)e.Item.FindControl("Label");
if (!string.IsNullOrEmpty(item.eventnumber))
{
label.Text = item.eventnumber;
}
else
{
label.Text = item.productid + "|" + item.type;
}
}
}
答案 1 :(得分:0)
我强烈建议您开始使用代码隐藏,ItemDataBound
是最好的地方:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView) e.Item.DataItem;
Button btn = (Button) e.Item.FindControl("ButtonID");
object productID = row["productID"];
object eventnumber = row["eventnumber"];
object type = row["type"];
if(DBNull.Value == eventnumber || string.IsNullOrWhiteSpace(eventnumber.ToString()))
{
btn.Text = string.Format("{0}|{1}", productID, type);
}
else
{
btn.Text = string.Format("{0}", eventnumber);
}
}
}