更改转发器行值

本文关键字:转发器 | 更新日期: 2023-09-27 18:33:23

im 尝试更改我的中继器中的值:(通过 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"; // ???????
            }
        }

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

一种解决方案是在itemTemplate中添加server controlliteral(runat server),并在服务器中添加"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方法中,您可以通过字符串检查空或不返回字符串。

您可以尝试使用 itemcreate 事件,该事件发生在控件绑定之前,而不是绑定控件之后。第一个链接中的示例:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemcreated.aspx

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater_events.aspx

ItemDataBound 在 Repeater 控件中的项进行数据绑定之后但在页面上呈现之前发生。

HTML 文件

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

.CS代码

protected void RPT_Bordereaux_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
   }
}

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

这应该有效