18. juni 2007 - 21:22Der er
21 kommentarer og 1 løsning
Hvad betyder denne serverfejl?
Er der nogen der kan forklare følgende fejl:
Server Error in '/Renlog' Application. --------------------------------------------------------------------------------
DataBinder.Eval: 'System.Data.Common.DbDataRecord' does not contain a property with the name KontrolID. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: DataBinder.Eval: 'System.Data.Common.DbDataRecord' does not contain a property with the name KontrolID.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[HttpException (0x80004005): DataBinder.Eval: 'System.Data.Common.DbDataRecord' does not contain a property with the name KontrolID.] System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) +146 System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName, String format) +11 System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) +473 System.Web.UI.Control.DataBind() +26 it.dk\rensningslog\renslog.aspx.cs:97 System.Web.UI.Control.OnLoad(EventArgs e) +67 System.Web.UI.Control.LoadRecursive() +35 System.Web.UI.Page.ProcessRequestMain() +750
Det betyder at du kalder Eval("KontrolID") et eller andet sted. Men den datasource som du bruger f.eks. en sqldatasource eller lignende ikke indeholder en kolonne kaldet kontrolid
din sql selecter kun kontrol og ikke kontrolId string strsql = "Select Kontrol From tblKontrol;"; skal være string strsql = "Select Kontrol,KontrolID From tblKontrol;";
Jeg bér om værdien her string strsql1 = "Select Udstyr From tblRens_Udstyr Where KontrolID='"+DropDownList1.SelectedItem.Value+"' ORDER BY Udstyr ASC;";
Der skal indlæses noget i en dropdownliste udfra et valg i en foregående dropdownliste.
Nope - du beder om at få "Udstyr", hvor værdien i samme række for KontrolID er lig med din DDL.Selectedvalue.
Hvis du vil have væriden med i selecten, så gør som LIFO skriver. Ting i "WHERE"-betingelsen kommer ikke automatisk med i resultatet, medmindre du beder om det a la lifo's select
ændr string strsql = "Select Kontrol From tblKontrol;"; til string strsql = "Select Kontrol,KontrolID From tblKontrol;"; og //DropDownList1.DataValueField = "KontrolID"; til DropDownList1.DataValueField = "KontrolID"; så skulle det funke(tror jeg)
Jeg forstår det ikke helt- Jeg skal indlæse de records fra kolonnen Udstyr der er lig med kontrolID. Jeg skal kun have en kolonne indlæst min første ddl.
din første ddl skal have 2 værdier en til tekst som bliver vist(Kontrol) og en værdi (kontrolID) som der værdi teksten representerer eller er det som du vil have ud det samme som du vil vise
} public class KClass { private int kontrolId; private string kontrol; public int KontrolID { get { return kontrolId; } } public string Kontrol { get { return kontrol; } } public KClass(string kontrol, int kontrolId) { this.kontrol = kontrol; this.kontrolId = kontrolId; } } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { int valgtVerdi = Convert.ToInt32(DropDownList1.SelectedValue); Label1.Text = "valgt verdi " + valgtVerdi; } }
delen til ddl2 skal ikke være sammen med delen til ddl1
if (!(IsPostBack)) {
string strsql = "Select Kontrol, KontrolID From tblKontrol;"; OleDbConnection objConnection = new OleDbConnection(strConnection); OleDbCommand objCommand = new OleDbCommand(strsql,objConnection); objConnection.Open(); DropDownList1.DataSource = objCommand.ExecuteReader(CommandBehavior.CloseConnection); DropDownList1.DataTextField = "Kontrol"; DropDownList1.DataValueField = "KontrolID"; DropDownList1.DataBind(); DropDownList1.Items.Insert(0, new ListItem("Vælg Kontrol", "")); } og så må du hoocke dig op på SelectedIndexChanged eventnen på ddl1 noget således og måske også sætte den til auto post back
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { string DbStr1; DbStr1=Server.MapPath("db/Renslog.mdb"); string strConnection1 = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+DbStr1; string strsql1 = "Select Udstyr From tblRens_Udstyr Where Kontrolrum='"+DropDownList1.SelectedItem.Value+"' ORDER BY Udstyr ASC;"; OleDbConnection objConnection1 = new OleDbConnection(strConnection1); OleDbCommand objCommand1 = new OleDbCommand(strsql1,objConnection1); objConnection1.Open(); DropDownList2.DataSource = objCommand1.ExecuteReader(CommandBehavior.CloseConnection); DropDownList2.DataTextField = "Udstyr"; DropDownList2.DataValueField = "Udstyr"; DropDownList2.DataBind(); DropDownList2.Items.Insert(0, new ListItem("Vælg Udstyr", "")); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.