Atalho para (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)
Pergunta
Ao usar um DataGrid em ASP.Net há realmente nenhum método de atalho para
(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
Basicamente, "item é um item não um cabeçalho, rodapé, o separador".
Eu não tenho sido capaz de encontrar um, mas eu percebi que eu colocá-lo para StackOverflow para ver se eu estou faltando um.
Solução
Você pode criar seu próprio Método de extensão para isso:
using System.Web.UI.WebControls;
public static class UiControlsHelper
{
public static bool IsItem(this DataGridItem item)
{
return item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem;
}
}
Em seguida, você pode usá-lo como este:
e.Item.IsItem();
Aqui está o mesmo para o GridView:
public static bool IsDataRow(this GridViewRow row)
{
return row.RowType == DataControlRowType.DataRow;
}
Outras dicas
Sagi adicionou um resposta para um um minha pergunta s.
Você pode substituir:
if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType...
com
if (e.Item.DataItem != null) ...
A resposta dele, não meu. Eu não testei. eu não sei se é:
- válido
- documentado
- suportado
- sujeitas a alterações em versões futuras do .NET framework
Há muito bem pode ser uma situação onde o DataItem é atribuído, mas não é um item válido. Vou deixar isso para os outros para teste, para cima / baixo voto, e comentar.
Não é um corte curto, mas encapsular isso em uma função, e seu código será muito mais legível.
seria um bom lugar para fazer um método de extensão methinks. . .