Ciao a tutti, sto cercando di eseguire una join tra 2 tabelle, in modo da recuperare un certo dato. Vi spiego la situazione:
Database con in tutti 3 tabelle relazionate tra loro (uno a molti): Gruppi --> Articoli --> Report.
Nella tabella articoli ho un campo int che prende il valore ID dei gruppi, nella tabella report ho un campo int che prende il valore ID della tabella Articoli. Quando eseguo una query, ad esempio sulla tabella report, non vorrei che venisse mostrato il valore del campo int collegato all'articolo ma vorrei che venisse mostrato il suo nome, questo dato si trova nella tabella articoli.
Ho pensato che la soluzione migliore potesse essere quella di creare una JOIN direttamente nella mia businessClass (dove gestisco tutti i vari metodi CRUD), ma non ci sono riuscito.
diciamo che ci sto provando... Ho creato il metodo nella business in questo modo:
public static tbl_Articolo ArticoloReport(int idGruppo)
{
DatabaseReportEntities dc = new DatabaseReportEntities();
var articoli = (from p in dc.tbl_Articolo join c in dc.tbl_GruppoArticoli on p.ID_Gruppo equals c.ID_Gruppo_Articoli where p.ID_Gruppo == idGruppo orderby p.Descrizione_Articolo select p).SingleOrDefault();
return articoli;
}
Mentre nel code file:
protected void GvReport_RowDataBound(object sender, GridViewRowEventArgs e)
{
Label articolo = null;
Label nascosta = null;
if (e.Row.RowType == DataControlRowType.DataRow)
{
articolo = e.Row.FindControl("lblArticolo") as Label;
nascosta = e.Row.FindControl("hiddenLbl") as Label;
}
if (articolo != null)
{
int nGruppo = Convert.ToInt32(e.Row.RowIndex);
int nArticolo = Convert.ToInt32(nascosta.Text);
var idGruppoHidden = BusinessClass.ArticoloReport(nArticolo);
articolo.Text = idGruppoHidden.Descrizione_Articolo;
}
...
...
Come potete vedere il controllo label dove voglio mostrare il risultato della mia join si trova all'interno di un gridview.
Questa pova pero mi restituisce un risultato NullReferenceException, andando in debug ho visto che la variabile idGruppoHidden risulta null...
Avete qualche suggerimento?
Grazie.
Ricardo.