在Repeater Control中进行一个列

时间:2012-07-02 15:00:20

标签: c# asp.net repeater

如何隐藏Asp Repeater中的特定列?在这种情况下我想要隐藏POwner!

<ItemTemplate>
    <tr>
        <td>
            <%#Eval("Priority") %>
        </td>
        <td>
            <%#Eval("ProjectName") %>
        </td>
        <td>
            <asp:Label ID="Label1" runat="server" Text='<%# Eval("POwner") %>'></asp:Label>
    </tr>
</ItemTemplate>

在后面的代码中添加它会产生错误:s

public void Repeater1_ItemDatabound(Object Sender, RepeaterItemEventArgs e)
{
    Repeater a =(Repeater)e.Item.FindControl("Label1");
    a.Visible = false;
}

3 个答案:

答案 0 :(得分:0)

Label1Label控制而不是Repeater,这就是您收到错误的原因

您还需要添加if条件,这样您才能获得项目的Label1而不是页眉或页脚。

试试这个

if (e.Item.ItemType == ListItemType.Item || 
    e.Item.ItemType == ListItemType.AlternatingItem)
{
    Label label = (Label)e.Item.FindControl("Label1");
    label.Visible = false;
}

答案 1 :(得分:0)

你应该将Label1转换为Label而不是转发器试试这个:

Label a =(Label)e.Item.FindControl("Label1");
a.Visible = false;

答案 2 :(得分:0)

我认为这是不可能的。但我可能会搞错了

也许您可以尝试在项目模板中使用以下内容:

<tr>
<td runat="server" visible='<%# expression %'>
......
</td>
<td>
....
</tr>

或使用ListView控件而不是Repeater

相关问题