26. marts 2006 - 13:59
Der er
27 kommentarer og 1 løsning
xxx does not contain a definition for yyy
Jeg har lige købt VS .NET 2005 og er ved at gå ud af mit "gode" skind... Jeg har lavet en knap på aspx siden, givet den et ID osv, men alligevel kan .cs siden ikke finde den og brokker sig hver gang jeg debugger! Hvis jeg vælger at køre siden trods "fejl" kører den perfekt. Det er altså ikke koden den er gal med, det er VS .NET 2005 der ikke kan læse dens egen codebehind side! Jeg har ellers læst et eller andet sted, at VS skulle have fixet den bug der gør at den ikke kan se kontrollerne hvis de ikke er indsat fra toolboxen, men det er den åbenbart ikke. Hvad gør jeg for at tvinge den til at se kontrollerne ???
Annonceindlæg fra Barco
26. marts 2006 - 14:04
#1
Èn ting der kan forårsage dette er hvis du har fjernet "partial" fra code-behind klassedefinitionen.
26. marts 2006 - 14:11
#2
Den er der stadig.
26. marts 2006 - 14:16
#3
prøv lige at paste både koden fra aspx siden og cs filen
26. marts 2006 - 14:20
#4
Der er meget kode, så her er et udpluk <asp:TableCell CssClass="subheadline">Grunddata</asp:TableCell> <asp:TableCell ColumnSpan="4" CssClass="tdbroed2"><asp:Image runat="server" BorderStyle="None" ImageUrl="~/images/edit.gif" AlternateText="Ret grunddata" /> <asp:DropDownList ID="ddGrundvin" AutoPostBack="true" OnSelectedIndexChanged="ddEditgrundvinCh" CssClass="felt" runat="server"></asp:DropDownList> <asp:Button ID="btnSetfix" OnClick="setfix" runat="server" Text="Set fix" /> </asp:TableCell> public void setfix(object sender, System.EventArgs e) { string gvID = this.ddGrundvin.SelectedValue.ToString(); string connString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); MySqlConnection conn = new MySqlConnection(connString); string cmdText = "UPDATE grundvin SET fix = 'y' WHERE gvID = '" + gvID + "'"; MySqlCommand cmd = new MySqlCommand(cmdText, conn); cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); }
26. marts 2006 - 14:21
#5
Error 1 'Vin_vin_edit' does not contain a definition for 'ddGrundvin'
26. marts 2006 - 14:22
#6
hvordan ser toppen af din aspx side ud ?
26. marts 2006 - 14:24
#7
<%@ Page Language="C#" MasterPageFile="~/main/main.master" AutoEventWireup="true" CodeFile="vin_edit.aspx.cs" Inherits="Vin_vin_edit" Title="Untitled Page" %> <%@ Register TagPrefix="cdd" Namespace="nsCostom" %> <%@ Register TagPrefix="uc" TagName="DealerSpecific" Src="~/userControls/wine_dealer_specific.ascx" %> <asp:Content ID="Content1" ContentPlaceHolderID="mainPage" Runat="Server"> <asp:Table ID="tblqe" CssClass="mainTable" runat="server" cellpadding="0" cellspacing="0"> <asp:TableRow> <asp:TableCell CssClass="headline" ColumnSpan="6">Ret vin</asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell CssClass="tdbroed2" ColumnSpan="6"><asp:Label ID="lblerr" runat="server" Text=""></asp:Label></asp:TableCell> </asp:TableRow> <asp:TableRow> <asp:TableCell CssClass="subheadline">Grunddata</asp:TableCell> <asp:TableCell ColumnSpan="4" CssClass="tdbroed2"><asp:Image runat="server" BorderStyle="None" ImageUrl="~/images/edit.gif" AlternateText="Ret grunddata" /> <asp:DropDownList ID="ddGrundvin" AutoPostBack="true" OnSelectedIndexChanged="ddEditgrundvinCh" CssClass="felt" runat="server"></asp:DropDownList> <asp:Button ID="btnSetfix" OnClick="setfix" runat="server" Text="Set fix" /> </asp:TableCell>
26. marts 2006 - 14:29
#8
og toppen af din class fil ?
26. marts 2006 - 14:31
#9
public partial class Vin_vin_edit : System.Web.UI.Page { public string vID; protected void Page_Load(object sender, EventArgs e) { string vID = ""; if (Request.QueryString["vID"] != null) vID = Request.QueryString["vID"]; if (!Page.IsPostBack) { getData(vID); showHideGrape(); this.tdImg.Attributes.Add("style", "border-left: 1px solid;"); //this.ddWineType.Attributes.Add("onkeypress", "keySort(this)"); } } public void ddEditgrundvinCh(object sender, System.EventArgs e) { fillGrunddata(); } public void setfix(object sender, System.EventArgs e) { string gvID = this.ddGrundvin.SelectedValue.ToString(); string connString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); MySqlConnection conn = new MySqlConnection(connString); string cmdText = "UPDATE grundvin SET fix = 'y' WHERE gvID = '" + gvID + "'"; MySqlCommand cmd = new MySqlCommand(cmdText, conn); cmd.Connection.Open(); cmd.ExecuteNonQuery(); cmd.Connection.Close(); } private void getData(string vID) { ............... try { reader = cmd.ExecuteReader(); reader.Read(); this.vID = reader["vID"].ToString(); fillGrundvin(prodID, gvID); if (fix == "y") this.btnSetfix.visible = false; else this.btnSetfix.visible = true; } catch(Exception ex) { this.lblerr.Text = ex.ToString(); } finally { if (reader != null) reader.Close(); conn.Close(); } } private void fillGrundvin(int prodID, string gvID) { string connString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); MySqlConnection conn = new MySqlConnection(connString); string cmdText = "SELECT g.gvID, g.navn, g.fix, k.klassifikation FROM grundvin g LEFT JOIN klassifikationer k ON k.kID = g.klassifikationID WHERE g.prodID = " + prodID + " ORDER BY g.navn"; MySqlCommand cmd = new MySqlCommand(cmdText, conn); string navn = ""; try { conn.Open(); MySqlDataReader reader = cmd.ExecuteReader(); this.ddGrundvin.Items.Clear(); this.ddGrundvin.Items.Add(new ListItem("Vælg", "")); while (reader.Read()) { if (reader["fix"].ToString() == "y") navn = reader["navn"].ToString().Replace(""", "\"").Replace("'", "'") + " " + reader["klassifikation"].ToString() + " *"; else navn = reader["navn"].ToString().Replace(""", "\"").Replace("'", "'") + " " + reader["klassifikation"].ToString(); this.ddGrundvin.Items.Add(new ListItem(navn, reader["gvID"].ToString())); } try { this.ddGrundvin.SelectedValue = gvID; } catch { } reader.Close(); } catch (Exception ex) { ddGrundvin.Items.Clear(); this.ddGrundvin.Items.Add(ex.ToString()); } finally { conn.Close(); } } private void fillGrunddata() { string gvid = this.ddGrundvin.SelectedValue.ToString(); this.navn.Text = gvid; } private string GvID { get { return gvID; } set { gvID = value; } } }
26. marts 2006 - 14:34
#10
prøv lige at ændre public void setfix(object sender, System.EventArgs e) til protected void setfix(object sender, System.EventArgs e)
26. marts 2006 - 14:35
#11
bliver din dropdownliste fyldt med data ?
26. marts 2006 - 14:37
#12
Ja ja, alt virker fint, men jeg får debug errors. Det kører som det skal hvis jeg klikker OK til at køre det selvom der er fejl...
26. marts 2006 - 14:39
#13
har du foretaget ændringen ?
26. marts 2006 - 14:41
#14
Jep, men der kommer samme fejl
26. marts 2006 - 14:44
#15
er det kun i setfix at den giver den fejl ?
26. marts 2006 - 14:46
#16
Hvis jeg i codebehind filen skriver "this." kommer ddGrundvin og btnSetfix heller ikke frem i listen, men alle de andre kontroller fra aspx kommer fint frem!
26. marts 2006 - 14:50
#17
prøv lige at rebuilde hele projektet. Jeg kan ikke se noget som ikke er som det skal være.
26. marts 2006 - 15:10
#18
Nu kommer ddGrundvin frem i intellisencelisten (eller hvad den nu hedder) når man skriver this. men den brokker sig stadig over den....
27. marts 2006 - 12:32
#19
prøv lige at gå ind i mappen: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files og tøm den. Derefter rebuilder du hele projektet og forsøger at køre det
27. marts 2006 - 16:14
#20
Sorry no go... Det lød som en god ide, men på den anden side ville det være en bug af format hvis det hjalp. Måske man skulle gå tilbage til Visual Web Developer, der var da igen af den slags problemer, men det er surt at tænke på at jeg har smidt 2700,- kr. ud af vinduet til denne version!
27. marts 2006 - 17:03
#21
prøv lige at flytte webstedet til en anden mappe og kør det derfra. Jeg har kun brug vs.net 2005 og har ikke oplevet nogen problemer.
27. marts 2006 - 17:05
#22
du har nogle små fejl this.btnSetfix.visible skal være this.btnSetfix.Visible prøv at ændre <%@ Page Language="C#" MasterPageFile="~/main/main.master" AutoEventWireup="true" CodeFile="vin_edit.aspx.cs" Inherits="Vin_vin_edit" Title="Untitled Page" %> til <%@ Page Language="C#" MasterPageFile="~/main/main.master" AutoEventWireup="true" CodeFile="vin_edit.aspx.cs" Inherits="vin_edit" Title="Untitled Page" %> og public partial class Vin_vin_edit : System.Web.UI.Page { til public partial class vin_edit : System.Web.UI.Page {
27. marts 2006 - 17:06
#23
det jeg har kunne teste virker hos mig. Men det er langt fra det hele.
27. marts 2006 - 17:35
#24
Grunden til at den skriver Vin_vin_edit er at vin_edit ligger i en mappe der hedder Vin, derfor har jeg heller ikke spekuleret mere over det... Men det klarede problemet :-) Har du en forklaring på hvorfor den ikke har kunne li dette ? Og et svar også :)
27. marts 2006 - 17:36
#25
Måske det er levn fra VWD som jeg startede projektet i?
27. marts 2006 - 18:09
#26
svar :) Jeg tror ikke det er et levn fra vwd. Den bør ikke skrive Vin_Vin. Ved ikke hvorfor den gjorde det. Men det kan give problemer hvis codebehind class'en ikke hedder det samme som filen altså i dette tilfælde Vin_edit. Jeg tror det har noget at gøre med den måde vs compiler tingene på men er ikke sikker. Men jeg er glad for at problemet blev løst.
27. marts 2006 - 18:46
#27
Tusind tak for hjælpen mate :)
27. marts 2006 - 19:22
#28
np :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.