更改中继器行的值?

4

我正在尝试通过 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。

但是,我的问题是:

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

3个回答

7
你可以尝试像这样做:
在.aspx文件中使用Repeater控件:
<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 方法中,您可以通过字符串检查是否为空,然后返回字符串。

我真是太傻了,怎么没想到呢...我猜可能太依赖于DataRowView类了... - Royi Namir
请看这里:http://stackoverflow.com/questions/9820464/got-anyway-i-set-class-inside-repeater-datarow-find-by-data-id-when-do-postback。和你想要的一样。 - Jignesh Rajput
你的解决方案很好,但是你提供的链接并没有回答我的问题,因为它涉及另一个问题。我需要设置一个值,而他没有设置任何值。 - Royi Namir

1

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";
            }

         }

这应该可以工作


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接