Atalho para (e.Item.ItemType == ListItemType.Item | e.Item.ItemType == ListItemType.AlternatingItem)

StackOverflow https://stackoverflow.com/questions/1202237

  •  05-07-2019
  •  | 
  •  

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.

Foi útil?

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. . .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top