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方法来分配它们吗?或者我可以让其余的都保持原样吗?真是太棒了!谢谢大家!