如何修改ASP.NET Repeater的输出以替换文本

时间:2015-04-01 18:53:20

标签: c# asp.net

我是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 |等等。有什么帮助吗?

2 个答案:

答案 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>