отобразить и скрыть определенный столбец в повторителе? - PullRequest
3 голосов
/ 15 ноября 2011

У меня есть повторитель. И я хочу, чтобы скрыть и отобразить определенный столбец для конкретного условия. У меня есть три типа предметов и их идентификаторы 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 ]

4 голосов
/ 15 ноября 2011

Вы можете перехватить событие OnItemDataBound повторителя и скрыть там столбец, если идентификатор (субъекта) равен 2.

Чтобы получить ссылку на столбец, сделайте его серверным элементом управления:

<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;
        }
    }
}

Обратите внимание, это просто упрощенный пример, с которого стоит начать.

3 голосов
/ 15 ноября 2011

Я думаю, вам следует начать с использования <HeaderTemplate></HeaderTemplate> и <FooterTemplate></FooterTemplate>, чтобы определить начало и конец таблицы, чтобы привести ее в порядок.

Таблицу можно запустить на сервере, добавивrunat = "server" и присвойте столбцу <td> идентификатор и атрибут runat = "server", чтобы вы могли программировать код сервера для него.Затем я бы eval связал видимый атрибут ячейки на основе значения вашего поля или использовал бы attribute.add ("display: none") или просто использовал бы сетку, как предложено в ссылке.

0 голосов
/ 12 июня 2017
<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>
...