我正在尝试更改转发器中的值:(通过 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
中添加 literal
或 itemTemplate
( 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/