请看下面的图片,我希望计算上一列(cnt)的值,我使用的是中继器控制。
示例:
if (last column (cnt) is greater than 5> )
{
response.write ("6");
}
sql查询
SELECT id, category, ( SELECT COUNT(id) FROM entry_table WHERE category.id = entry_table.Cat_id) as cnt FROM category
中继器代码
<asp:Repeater ID="CloudTags" runat="server" OnItemDataBound="CloudTags_ItemDataBound">
<ItemTemplate>
<asp:HyperLink ID="HyperLink9" runat="server">
<%#DataBinder.Eval(Container,"DataItem.Category")%>
(<%#DataBinder.Eval(Container,"DataItem.cnt")%>)
</asp:HyperLink>
</ItemTemplate>
</asp:Repeater>
代码在中的应用
protected void CloudTags_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}
发布于 2014-08-25 06:51:51
你可以这样做:
protected void CloudTags_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
var repeaterItem = e.Item;
// TODO you still have to check the type of the repeaterItem
var dataItem = (dynamic) repeaterItem.DataItem;
var cnt = dataItem.cnt;
if (cnt > 5)
{
var hyperLink = (HyperLink) repeaterItem.FindControl("HyperLink9");
hyperLink.CssClass = "TagSize2";
}
}
或
protected void CloudTags_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
var repeaterItem = e.Item;
// TODO you still have to check the type of the repeaterItem
var dataItem = repeaterItem.DataItem;
var objCnt = DataBinder.Eval(dataItem, "cnt");
// TODO check the whole parsing/converting stuff ...
var stringCnt = objCnt.toString();
var cnt = int.Parse(stringCnt);
if (cnt > 5)
{
var hyperLink = (HyperLink) repeaterItem.FindControl("HyperLink9");
hyperLink.CssClass = "TagSize2";
}
}
无论如何,我强烈建议您不要使用dynamic
或DataBinder.Eval
,而是将.Data
-property转换为强类型!否则,这将导致一些花哨的运行时反射,并将对性能产生影响!
https://stackoverflow.com/questions/25470195
复制相似问题