Попытка скрыть <td>из C # приводит к ошибке: имя '' не существует в текущем контексте - PullRequest
0 голосов
/ 04 октября 2018

Цель: Я пытаюсь (условно) скрыть значение в зависимости от моих настроек

Что я пробовал: Сначала я попытался сделать это следующим образомУ меня есть в других местах, но я прятал элементы управления asp, как Panel.Это просто HTML.

При поиске было упомянуто добавить: 1. id 2. runat = server

Проблема: Я пробовал это, но яполучаю ошибку:

«Имя groupid не существует в текущем контексте»


CODE:

.aspx:

<td id="groupid" runat="server">

.cs:

groupid.Visible = true;

в шаблоне Item для шаблона asp: ListView:

<asp:ListView>
<LayoutTemplate>
</LayoutTemplate>
<ItemTemplate>
        <tr>
            <td>

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Если элемент управления находится в ListView (или Repeater, GridView и т. Д.), Вы должны использовать FindControl.И поскольку вы используете «обычный» td с runat = server, вам нужно привести его к HtmlTableCell.

HtmlTableCell htc = ListView1.Items[1].FindControl("groupid") as HtmlTableCell;

htc.Attributes.Add("style", "background-color: red");
//or
htc.Visible = false;

Хотя я бы не рекомендовал скрывать отдельные ячейки таблицы.Это может дать странные результаты в браузере.

0 голосов
/ 05 октября 2018

td - это ячейка таблицы в HTML.

В ASP.NET вы можете использовать <asp:TableCell>, что эквивалентно td.

Вместо этого присвойте Id значение <asp:TableCell>использования <td>

Решает ли это вашу проблему?

Обновления:

C #:

protected void ListView1_DataBound(object sender, EventArgs e)
{
    ListView1.FindControl("tdotherItem").Visible = false;
}

ASPX:

<asp:ListView ID="ListView1" runat="server" DataSourceID="MyDataSource" ItemPlaceholderID="itemPlaceHolder">
    <LayoutTemplate>
        <table>
            <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td runat="server" id="myCol" visible='<%# (bool)Eval("otherItem") %>'>
                <%# Eval("other") %>
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>

Обратите внимание на использование visible ='<%# %>'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...