Domanda

Sto scrivendo un semplice front-end prototipo utilizzando un GridView popolato tramite la funzione, anziché essere collegato direttamente a un'origine dati SqlServer.

Quindi posso cancellare una riga / record dalla griglia / database sottostante che sono attualmente

  1. Impostazione di AutoGenerateDeleteButton = true
  2. Visualizzazione degli ID record univoci nella prima colonna
  3. Gestione dell'evento RowDeleting
  4. Ottenere l'ID ottenendo la griglia.Rows [e.RowIndex] .Cells [idIndex] .Text
  5. Passando quel numero a una funzione che esegue l'eliminazione

Questo sembra funzionare bene, ma preferirei non mostrare gli ID agli utenti perché non significano nulla per loro.

Ho provato a impostare la proprietà Visible della colonna id su false, ma questo ha causato il passaggio 4 sopra per restituire una stringa vuota, quindi nessun record eliminato.

Quindi, come posso memorizzare il numero ID nascosto con ogni riga?

O sto andando in questo modo completamente sbagliato?

Seguito dato alle risposte:

Grazie per entrambe le risposte, ho finito per andare nel modo DataKeyNames di Eric. Per le altre persone che non conoscono ASP.NET come me, i passaggi che ho usato dove

  • Tra le righe in cui ho impostato la griglia DataSource e chiamato DataBind (), ho aggiunto

    grid.DataKeyNames = new string [] {" id "};

  • Quindi nella funzione che gestisce RowDeleting ho ottenuto il mio id usando

    grid.DataKeys [e.RowIndex] .Value

È stato utile?

Soluzione

GridView ha una proprietà DataKeyNames. Quando si associa un'origine dati alla griglia, si impostano DataKeyNames (in genere con un solo nome, il campo PK). Non mostri il PK, ma puoi accedervi da code-behind.

Altri suggerimenti

Visibile = false significa che non viene visualizzato sulla pagina. Quello che vuoi è o renderlo un campo modello e usare un HiddenField per contenere il valore o impostare lo stile sul controllo su " display: none; " ;. Questo sarebbe il caso se il codice lato client avesse bisogno dell'accesso al valore per una chiamata Ajax o qualcosa del genere.

Altrimenti usa la proprietà DataKeyNames come suggerisce @Eric Z Beard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top