我是ASP.NET的新手,所以如果这是一个简单的问题,请原谅。我有一个包含三列的转发器表,它从数据集中提取值以进行填充。这是网页代码:
<table>
<tr>
<asp:Repeater ID="assetTypeDisplay" runat="server">
<ItemTemplate>
<td>
<%# DataBinder.Eval(Container.DataItem, "primary_asset") %>
</td>
</ItemTemplate>
<SeparatorTemplate>
</tr>
<tr>
</SeparatorTemplate>
</asp:Repeater>
</tr>
</table>
primary_asset
列是一个比特值,我希望它不返回True / False我希望它在表格的网页上显示“主要资产”,如果为真,如果它是假的则没有。还有另一个名为“二级资产”的专栏,我也想做同样的事情。第三列additional_asset_type
是一个整数,根据该值将确定此表中应显示的其他值。
这是我背后的代码
assetTypeDataset = AssetController.GetAssetTypeByApplicationID(Convert.ToInt32(AppID));
if (assetTypeDataset.Tables[0].Rows.Count > 0)
{
assetTypeDisplay.DataSource = assetTypeDataset.Tables[0];
assetTypeDisplay.ItemDataBound += new RepeaterItemEventHandler(assetTypeDisplay_ItemDataBound);
assetTypeDisplay.DataBind();
}
protected int assetTypeCounter = 0;
protected int assetTypeColumnCount = 3;
private void assetTypeDisplay_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Separator)
if ((++assetTypeCounter % assetTypeColumnCount) != 0)
e.Item.Visible = false;
}
我需要更改什么,而不是只显示单个值,它将显示所有值的值?我觉得在网页上它应该像<%# DataBinder.Eval(Container.DataItem, "assetTypes") %>
这样它可以显示Primary,Secondary和所有其他类型,但这必须是对列名的引用。
对于仅包含主要资产的应用程序,最终结果应如下所示:
| Primary Asset |------------|
如果它只是次要资产:
|---------------| Secondary Asset |
如果两者都是这样:
| Primary Asset | Secondary Asset |
为了清楚起见,只是使用表格,但它不需要采用任何特定的表格格式,只要它显示和隐藏类似的值,而不仅仅是显示| False | True |
等等。有什么帮助吗?
答案 0 :(得分:0)
自从我使用过webforms以来已经很久了,但你可以试试这个:
<%# DataBinder.Eval(Container.DataItem, "primary_asset")?"Primary Asset":"" %>
或者,你可以做这样的事情,但确切的语法使我不知道:
<%# GetAssetType(DataBinder.Eval(Container.DataItem, "primary_asset")) %>
然后创建一个函数&#34; GetAssetType&#34;检查您传入的参数并返回正确的值。如果您愿意,甚至可以传入Container.DataItem。
答案 1 :(得分:0)
试试这个:
<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "primary_asset")) == true ? "Primary Asset" : "------" %>
二级资产相同,
<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "secondary_asset")) == true ? "Secondary Asset" : "------" %>
更新了代码,以显示资产类型的2个单独列:
<table>
<tr>
<asp:Repeater ID="assetTypeDisplay" runat="server">
<ItemTemplate>
<td>
<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "primary_asset")) == true ? "Primary Asset" : "------" %>
</td>
<td>
<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "secondary_asset")) == true ? "Secondary Asset" : "------" %>
</td>
</ItemTemplate>
<SeparatorTemplate>
</tr>
<tr>
</SeparatorTemplate>
</asp:Repeater>
</tr>