在转发器中显示和隐藏特定列?

时间:2011-11-15 12:37:59

标签: asp.net webforms repeater

我有一个转发器。我想隐藏和显示特定条件的特定列。我有三种类型的主题,它们的ID分别是0,1,2。现在我想在主题仅为2时显示该特定列。

我的代码是: -

 <table id="table1" class="yui" cellpadding="0" cellspacing="0">
                <thead>
                    <tr>
                        <th>
                            <a href='#' title="Click Header to Sort">EmpID #</a>
                        </th>
<th>Edit</th>

                    </tr>
                </thead>
                <tbody>
                    <asp:Repeater ID="Repaddressorbbl" runat="server" OnItemCommand="Repaddressorbbl_ItemCommand">
                        <ItemTemplate>

                            <tr id="gh" style="cursor: pointer" onclick="Select(this);">
                                <td style="text-align: center;">
                                    <%#Eval("empid")%>
                                </td>  
 <td>
                                    <asp:LinkButton ID="lknumber" runat="server" Text="Edit" CommandName="subjectid" />
                                </td>                             
                            </tr>
                        </ItemTemplate>
                    </asp:Repeater>
                </tbody>
                <tfoot>

                </tfoot>
            </table>

3 个答案:

答案 0 :(得分:4)

如果(主题)项ID为2,您可以捕获转发器的OnItemDataBound事件并隐藏列。

为了获得对该列的引用,请将其设置为服务器控件:

<td style="text-align: center;" id="COL_TO_HIDE" runat="server"><%#Eval("empid")%></td>  

然后在转发器事件中,您只需查找控件并隐藏它:

protected void YourRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var subject = (Subject)e.Item.DataItem;
        if (subject.Id == 2)
        {
            var col = e.Item.FindControl("COL_TO_HIDE");
            col.Visible = false;
        }
    }
}

请注意,这只是一个简单的例子,您应该开始使用。

答案 1 :(得分:3)

我认为您应该首先使用<HeaderTemplate></HeaderTemplate><FooterTemplate></FooterTemplate>来定义表格的开头和结尾,以便整理一下。

您可以通过添加runat =“server”让表格在服务器上运行,并为列<td>提供一个id和一个runat =“server”属性,以便您可以针对它编写服务器代码。然后,我将根据您的字段值eval绑定单元格的visible属性,或者使用attributes.add(“display:none”)或者只使用链接中建议的网格视图。

答案 2 :(得分:0)

<asp:Repeater ID="Repaddressorbbl" runat="server" 
OnItemCommand="Repaddressorbbl_ItemCommand">
    <ItemTemplate>
        <tr id="gh" style="cursor: pointer" onclick="Select(this);">
            <td style="text-align: center;">
                <%#Eval("empid")%>
            </td>  
            <% if (false){ %>
            <td>
                <asp:LinkButton ID="lknumber" runat="server" 
                 Text="Edit" CommandName="subjectid" />
            </td> 
            <% } %>                             
        </tr>
    </ItemTemplate>
</asp:Repeater>