Roy*_*mir 4 c# asp.net webforms repeater itemdatabound
即时尝试更改转发器中的值:(通过itemdatabound事件)
如果年份为空 - 设定值 blabla
我的中继器:
<ItemTemplate>
<tr >
<td >
<%#Eval("year") %>
</td>
Run Code Online (Sandbox Code Playgroud)
我的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"; // ???????
}
}
Run Code Online (Sandbox Code Playgroud)
它确实发生了变化但未在转发器中显示(显示旧值).
一种解决方案是在服务器中的- 和" "中添加一个server control
或literal
(runat服务器)并更改其值.itemTemplate
findControl
其他解决方案是通过jQuery - 搜索空的最后一个TD.
但是 - 我的问题:
有没有其他服务器端解决方案()?
你可以尝试这样的事情:
.aspx中的转发器:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<table>
<tr>
<td> <%# GetText(Container.DataItem) %></td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
.cs:
protected static string GetText(object dataItem)
{
string year = Convert.ToString(DataBinder.Eval(dataItem, "year"));
if (!string.IsNullOrEmpty(year))
{
return year;
}
else
{
return "blahblah";
}
}
Run Code Online (Sandbox Code Playgroud)
在IN GetText
方法中,您可以通过字符串检查是否为空或返回字符串.