Domanda

Questo è un modo generale in cui DataBind fa domande ...

Ho una pagina semplice con un GridView che è associato (nel codice aspx) a un ObjectDataSource.

Posso guardare nella funzione Select () chiamata da ObjectDataSource per vedere che viene chiamata sul caricamento iniziale e su ogni post. Ho un po 'di logica che si verifica sui back-back che influirà sui dati di GridView e desidero chiamare GridView.DataBind () più avanti nel post-back, dopo aver apportato alcune modifiche.

Esiste un modo per impedire il rebinding automatico che si verifica su ogni post? Questo significa che non posso usare un ObjectDataSource per questo controllo?

È stato utile?

Soluzione

Hai ragione nel dire che il controllo granulare che stai cercando non è possibile e richiede il codice dietro. Gli oggetti dell'origine dati di ASP.NET non sono altro che un problema in a **. Scoprirai che mentre li usi otterrai situazioni come questa che si ripresentano ancora e ancora.

Alcuni dei problemi che troverai sono:

  • Non fortemente tipizzato
  • Inflessibile (come hai notato)
  • Muddy up il codice di presentazione

Ho iniziato a fare tutto l'accesso ai dati nel codice dietro e non ho guardato indietro.

Altri suggerimenti

Ho combattuto anche con questa associazione automatica e ho pensato di pubblicare la mia soluzione qui:

  1. rimuovi " DataSourceID " dalla pagina ASPX, quando non è impostato, non è presente l'associazione automatica
  2. imposta DataSourceID in CodeBehind solo quando è necessario DataBinding: myGridView.DataSourceID = " MyDataSource " ;;
  3. non chiama myGridView.DataBind () esplicitamente, il databinding avviene automaticamente su PreRender

Mi ci è voluto un po 'per capirlo, ma ora tutto funziona bene.

Contesto

Uso ObjectDatasource perché gestisce automaticamente tutti i paging e ordinamento di Gridview. Sto usando un livello dati con Linq2SQL e utilizzo i suoi metodi Skip () e Take () per caricare solo la quantità di dati necessari per popolare una pagina di GridView.

Uso di SelectMethod e SelectCountMethod di ObjectDataSource

Sì. Se vuoi quel tipo di controllo su quando si verifica il database, devi farlo nel codice dietro.

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