Avatar billede trumf Nybegynder
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 ???
Avatar billede driis Nybegynder
26. marts 2006 - 14:04 #1
Èn ting der kan forårsage dette er hvis du har fjernet "partial" fra code-behind klassedefinitionen.
Avatar billede trumf Nybegynder
26. marts 2006 - 14:11 #2
Den er der stadig.
Avatar billede dr_chaos Nybegynder
26. marts 2006 - 14:16 #3
prøv lige at paste både koden fra aspx siden og cs filen
Avatar billede trumf Nybegynder
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" />&nbsp;&nbsp;<asp:DropDownList ID="ddGrundvin" AutoPostBack="true" OnSelectedIndexChanged="ddEditgrundvinCh" CssClass="felt" runat="server"></asp:DropDownList>
        &nbsp;&nbsp;<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();
    }
Avatar billede trumf Nybegynder
26. marts 2006 - 14:21 #5
Error    1    'Vin_vin_edit' does not contain a definition for 'ddGrundvin'
Avatar billede dr_chaos Nybegynder
26. marts 2006 - 14:22 #6
hvordan ser toppen af din aspx side ud ?
Avatar billede trumf Nybegynder
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" />&nbsp;&nbsp;<asp:DropDownList ID="ddGrundvin" AutoPostBack="true" OnSelectedIndexChanged="ddEditgrundvinCh" CssClass="felt" runat="server"></asp:DropDownList>
        &nbsp;&nbsp;<asp:Button ID="btnSetfix" OnClick="setfix" runat="server" Text="Set fix" />
    </asp:TableCell>
Avatar billede dr_chaos Nybegynder
26. marts 2006 - 14:29 #8
og toppen af din class fil ?
Avatar billede trumf Nybegynder
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("&quot;", "\"").Replace("&#39;", "'") + " " + reader["klassifikation"].ToString() + " *";
                else
                    navn = reader["navn"].ToString().Replace("&quot;", "\"").Replace("&#39;", "'") + " " + 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;
        }
    }
}
Avatar billede dr_chaos Nybegynder
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)
Avatar billede dr_chaos Nybegynder
26. marts 2006 - 14:35 #11
bliver din dropdownliste fyldt med data ?
Avatar billede trumf Nybegynder
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...
Avatar billede dr_chaos Nybegynder
26. marts 2006 - 14:39 #13
har du foretaget ændringen ?
Avatar billede trumf Nybegynder
26. marts 2006 - 14:41 #14
Jep, men der kommer samme fejl
Avatar billede dr_chaos Nybegynder
26. marts 2006 - 14:44 #15
er det kun i setfix at den giver den fejl ?
Avatar billede trumf Nybegynder
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!
Avatar billede dr_chaos Nybegynder
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.
Avatar billede trumf Nybegynder
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....
Avatar billede dr_chaos Nybegynder
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
Avatar billede trumf Nybegynder
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!
Avatar billede dr_chaos Nybegynder
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.
Avatar billede dr_chaos Nybegynder
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
{
Avatar billede dr_chaos Nybegynder
27. marts 2006 - 17:06 #23
det jeg har kunne teste virker hos mig.
Men det er langt fra det hele.
Avatar billede trumf Nybegynder
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å :)
Avatar billede trumf Nybegynder
27. marts 2006 - 17:36 #25
Måske det er levn fra VWD som jeg startede projektet i?
Avatar billede dr_chaos Nybegynder
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.
Avatar billede trumf Nybegynder
27. marts 2006 - 18:46 #27
Tusind tak for hjælpen mate :)
Avatar billede dr_chaos Nybegynder
27. marts 2006 - 19:22 #28
np :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester