C# 切换分配给项目中继器的数据字段
我一直在四处寻找,我不知道这是否可能。我有一个按钮(在中继器内),该按钮的文本由数据集中返回的两个值决定,如下所示:C# 切换分配给项目中继器的数据字段,c#,asp.net,C#,Asp.net,我一直在四处寻找,我不知道这是否可能。我有一个按钮(在中继器内),该按钮的文本由数据集中返回的两个值决定,如下所示: Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber") + "|" + DataBinder.Eval(Container.DataItem, "type" )%>' Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber")!=""
Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber") + "|" + DataBinder.Eval(Container.DataItem, "type" )%>'
Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber")!=""?DataBinder.Eval(Container.DataItem, "eventnumber"):DataBinder.Eval(Container.DataItem, "productid") + "|" + DataBinder.Eval(Container.DataItem, "type" )%>'
Text=''
但是我想做的是根据eventnumber中是否有值来切换分配给哪个字段。大概是这样的:
Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber") + "|" + DataBinder.Eval(Container.DataItem, "type" )%>'
Text='<%# DataBinder.Eval(Container.DataItem, "eventnumber")!=""?DataBinder.Eval(Container.DataItem, "eventnumber"):DataBinder.Eval(Container.DataItem, "productid") + "|" + DataBinder.Eval(Container.DataItem, "type" )%>'
Text=''
但我似乎无法让它发挥作用。(在本例中,我没有收到任何错误,但文本为空)
有人能帮忙吗
谢谢,,
Craig最简单、最易读的方法是将中继器连接到事件
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;
}
}
}
我强烈建议开始使用codebehind,这里是最好的地方:
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);
}
}
}
做
!string.IsNullOrEmpty(DataBinder.Eval(Container.DataItem,“eventnumber”))
work?试试这个@Tim Schmelter好吧,我来试试。需要注意的是,还有很多其他东西是使用上面的方法绑定的,我需要使用ItemDataBound方法来分配它们吗?或者我可以让其余的都保持原样吗?真是太棒了!谢谢大家!