我正在尝试更改转发器中的值:(通过 itemdatabound 事件)

如果年份为空 - 设置值 blabla
我的中继器:

 <ItemTemplate>
                <tr  >
                    <td  >
                        <%#Eval("year") %>
                   </td>

我的 C# 代码:
 void RPT_Bordereaux_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            if (string.IsNullOrEmpty(((DataRowView)e.Item.DataItem)["year"].ToString()))
            {
                (((DataRowView)e.Item.DataItem)["year"]) = "blabla"; // ???????

            }
        }

它确实发生了变化,但未显示在中继器中(显示旧值)。

一种解决方案是在 server control 中添加 literalitemTemplate( runat 服务器) - 并在服务器中添加“findControl ” - 并更改其值。

其他解决方案是通过 jQuery - 搜索空的最后一个 TD。

但是 - 我的问题:

有没有其他服务器端解决方案()?

最佳答案

你可以尝试这样的事情:

.aspx 中的 中继器:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
    <table>
    <tr>
          <td> <%# GetText(Container.DataItem) %></td>
    </tr>

    </table>
    </ItemTemplate>
</asp:Repeater>

.cs :
 protected static string GetText(object dataItem)
 {
    string year = Convert.ToString(DataBinder.Eval(dataItem, "year"));
    if (!string.IsNullOrEmpty(year))
    {
        return year;
    }
    else
    {
        return "blahblah";
    }

 }

GetText 方法中,您可以通过字符串检查是否为空而不是返回字符串。

关于c# - 更改中继器行值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10469274/

10-17 01:00