Ну, с вашим текущим кодом мы не знаем, является ли это тем, что e.Item.FindControl возвращает ноль, или потому что это не Literal. Вот почему вы должны использовать приведение вместо «как», если вы уверены, что тип действительно должен быть.
Измените код на:
Literal childLit = (Literal) e.Item.FindControl("sleepsChildrenLit");
и посмотри, что получится. Если вы получите исключение приведения, вы узнаете, что это был неправильный тип. Если вы все еще получаете NRE, FindControl возвращал значение NULL.
РЕДАКТИРОВАТЬ: Теперь, кроме этого, давайте посмотрим на код после него:
String str = e.Item.DataItem.ToString();
if (e.Item.DataItem != null)
{
...
}
Если e.item.DataItem
равно нулю, то вызов ToString () вызовет исключение - поэтому проверка на следующей строке бессмысленна. Я подозреваю, что вы на самом деле хотите:
if (e.Item.DataItem != null)
{
String str = e.Item.DataItem.ToString();
...
}