Повторитель ItemDataBound NullReferenceException - PullRequest
0 голосов
/ 11 сентября 2018

Я получаю NullReferenceException, когда в моих данных есть нулевое значение. В этих данных будет много пустых и пустых значений, и я хочу выделить их. col2 это идентификатор тд

<td id="col2"><asp:Label ID="ESubject" Text='<%# (Eval("EventSubject") == null) ? "null" : Eval("EventSubject") %>' runat="server" /></td>
protected void myRepeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    { 
            var varSubject = e.Item.FindControl("ESubject");
            var adjSubject = varSubject.ToString();

            HtmlTableCell td = (HtmlTableCell)e.Item.FindControl("col2");

            if (adjSubject == "null")
            {
                td.BgColor = "yellow";
            }
    }
}

1 Ответ

0 голосов
/ 12 сентября 2018

Вам нужно добавить runat="server", если вы хотите получить доступ к обычному HTML-элементу управления из кода.

<td id="col2" runat="server">
   ...
</td>

Мы используем .FindControl, если вы хотите найти дочерний элемент управления.

Поскольку HtmlTableCell является непосредственным родителем элемента управления меткой, необходимо использовать .Parent.

protected void myRepeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        var varSubject = e.Item.FindControl("ESubject");
        var adjSubject = varSubject.Parent as HtmlTableCell;
        if (adjSubject != null)
        {
            adjSubject.BgColor = "yellow";
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...