Har en Class MatchFaktaAccess som jag inte får att fungera vid en okulärbesiktning av koden kan jag säga att minsta lilla null från dbn kommer orsaka exception. Sorry glömde klistra in error meddelandet. Är det inte en List<xxxxx> du skall returnera istället för en struct ? Det står ju faktiskt tydligt i ditt fina exception vad som är fel.Någon som hittar felet?
public struct SpelarInfoHemma
{
//public int MatchId;
public string SpelarNamn;
public string MatchResultLicNbr;
public int MatchResultShirtNo;
public int MatchResultRound1;
public int MatchResultRound2;
public int MatchResultRound3;
public int MatchResultRound4;
public int MatchResultPlayer;
public int Banp;
public int Ser;
public int MatchResultPlace;
public int RankPlace;
public int RankPoints;
public int Rankingpoäng;
}
public class MatchFaktaAccess
{
public static SpelarInfoHemma GetMatchFaktaSpelarInfoH(string matchId)
{
// get a configured DbCommand object
DbCommand comm = GenericDataAccess.CreateCommand();
// set the stored procedure name
comm.CommandText = "p_getMatchFaktaHome";
// create a new parameter
DbParameter param = comm.CreateParameter();
param.ParameterName = "@paramMatchId";
param.Value = matchId;
param.DbType = DbType.Int32;
comm.Parameters.Add(param);
// execute the stored procedure and save the results in a DataTable
DataTable table = GenericDataAccess.ExecuteSelectCommand(comm);
//wrap retrieved data into a SpelarInfo Object
SpelarInfoHemma details = new SpelarInfoHemma();
if (table.Rows.Count > 0)
{
// get the first table row
DataRow dr = table.Rows[0];
// get Spelarinfo details
details.MatchResultLicNbr = dr["MatchResultLicNbr"].ToString();
details.SpelarNamn = dr["SpelarNamn"].ToString();
details.MatchResultShirtNo = Int32.Parse(dr["MatchResultShirtNo"].ToString());
details.MatchResultPlayer = Int32.Parse(dr["MatchResultPlayer"].ToString());
details.MatchResultPlace = Int32.Parse(dr["MatchResultPlace"].ToString());
details.Banp = Int32.Parse(dr["Banp"].ToString());
details.Ser = Int32.Parse(dr["Ser"].ToString());
details.MatchResultPlace = Int32.Parse(dr["MatchResultPlace"].ToString());
}
return details;
}
}
I Matchfakta.ascx.cs
private void PlayerInfo()
{
// get the PlayerInfo
string matchId = Request.QueryString["MatchId"];
// Visa SpelarInfo
list.DataSource = MatchFaktaAccess.GetMatchFaktaSpelarInfoH(matchId);
list.DataBind();
}
Sv:Någon som hittar felet?
tom i aspx får du ett exception om t.ex. matchid saknas på urlenSv: Någon som hittar felet?
Exception Details: System.ArgumentException: An invalid data source is being used for list. A valid data source must implement either IListSource or IEnumerable.
Source Error:
Line 27:
Line 28: // Visa SpelarInfo
Line 29: list.DataSource = MatchFaktaAccess.GetMatchFaktaSpelarInfoH(matchId);
Line 30: list.DataBind();
Line 31: }
Source File: c:\Inetpub\wwwroot\Bowling\UserControls\MatchFakta.ascx.cs Line: 29 Sv:Någon som hittar felet?
Sv:Någon som hittar felet?
DataSource måste implemetera någon av interfacen, IListSource eller IEnumerable.
Enkelt sagt måste du sätta DataSource till en lista med saker, inte ett enskilt objekt.
Jag misstänker att du eg. vill göra något helt annat, men en lösning är följande.
List<SpelarInfoHemma> detailCollection = new List<SpelarInfoHemma>();
detailCollection.Add(MatchFaktaAccess.GetMatchFaktaSpelarInfoH(matchId));
list.DataSource = detailCollection;
list.DataBind();
Allt detta i din PlayerInfo funktion.
//Micke