Ciao a tutti,
ho inserito in una web form due user control DropDownList che ho riempito tramite SelectMethod
Precedentemente avevo creato le classi in ADO.NET Entity Data Model
Sto seguendo la guida ASP.NET 4.5 e ASP.NET MVC 4.0 in C# e VB
che porta un esempio per cambiare i dati della seconda DropDownList dopo la selezione della prima.
Sto riscontrando però un problema della where in quanto l'esempio fornito porta una where con una string mentre io vorrei farla con un int, in quanto sto cercando di utilizzare le chiavi primarie che ho nella mia tabella (mi sembra più logico e veloce)
L'esempio fornito porta questo codice
private string catId;
public string ProprietaCatID
{
get { return catId; }
set
{
if(catId != value)
{
catId = value;
this.GridView1.DataBind();
}
}
}
BookstoreContext bookconn = new BookstoreContext();
protected void Page_Load(object sender, EventArgs e)
{
}
public IQueryable<SottoCategorie> GridView1_GetData()
{
return bookconn.SottoCategorie.Where(o => o.idCat == this.ProprietaCatID);
}
L'errore che mi viene dato in questo punto
return bookconn.SottoCategorie.Where(o => o.idCat == this.ProprietaCatID);
è questo
Non è possibile applicare l'operatore '==' a operandi di tipo 'int?' e 'string'
Il messaggio parla anche di string quindi non ho capito come ha fatto l'esempio a funzionare, ma intanto stavo io provando a fare qualche cambio
Il primo cambio che ho fatto è quello di variare le variabili string in int
quindi questo
private string catId;
public string ProprietaCatID
l'ho trasformato in questo
private int catId;
public int ProprietaCatID
però a questo punto il messaggio di errore mi cambia
Non è possibile convertire in modo implicito il tipo 'System.Linq.IQueryable<EntityDataModel.Models.SottoCategorie>' in 'System.Linq.IQueryable<EntityDataModel.SottoCategorie>'.
il correttore mi dice di levare il this.
ma anche se lo levo non cambia nulla
quindi ho provato quindi ad aggiungere un cast
scrivendo così
return bookconn.SottoCategorie.Where(o => o.idCat == (int)this.ProprietaCatID);
ma l'errore mi si trasforma in questo
Non è possibile convertire in modo implicito il tipo 'System.Linq.IQueryable<EntityDataModel.Models.SottoCategorie>' in 'System.Linq.IQueryable<EntityDataModel.SottoCategorie>'. È presente una conversione esplicita. Probabilmente manca un cast.
Avete qualche suggerimento?
Cosa sto sbagliando, credo che la mia logia di usare un int (le chiavi primarie) sia giusta
Grazie