Avatar billede agertoft Nybegynder
17. oktober 2004 - 14:35 Der er 12 kommentarer og
1 løsning

Session og global.asax problemer

Jeg har et problem med mine hjemmesider, når jeg vil gøre brug af mine sessions. Jeg får følgende fejl:

Compiler Error Message: CS0234: The type or namespace name 'Global' does not exist in the class or namespace 'System.Web.UI.WebControls.DataGrid' (are you missing an assembly reference?)

Source Error:



Line 26:   
Line 27:    [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
Line 28:    public class Global_asax : DataGrid.Global {
Line 29:       
Line 30:        private static bool __initialized = false;


Source File: c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\datagrid\827e165f\a4dd7967\zr_mie3e.0.cs    Line: 28


Jeg har selvfølgelig sikret mig, at jeg kun har én Global.asax fil i namespacet DataGrid. Men den kan tydeligvis ikke finde den. Hvorfor ikke?
Avatar billede snepnet Nybegynder
17. oktober 2004 - 14:42 #1
det virker lidt som om du på en eller anden måde står i et DataGrid-scope når du bruger Global.

kan du ikke vise hvordan du prøver at tilgå session ? - eller hvad det er for noget kode der udløser fejlen ?

mvh
Avatar billede agertoft Nybegynder
17. oktober 2004 - 14:46 #2
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DataGrid
{
    public class WebForm1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.DataGrid MyDataGrid;
        protected System.Web.UI.WebControls.DataGrid ShoppingCart;

        DataTable Cart;
        DataView CartView;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            if (Session["DG5_ShoppingCart"] == null)
            {
                Cart = new DataTable();
                Cart.Columns.Add(new DataColumn("Item", typeof(string)));
                Cart.Columns.Add(new DataColumn("Price", typeof(string)));
                Session["DG5_ShoppingCart"] = Cart;
            }
            else
            {
                Cart = (DataTable)Session["DG5_ShoppingCart"];
            }   
            CartView = new DataView(Cart);
            ShoppingCart.DataSource = CartView;
            CartView.Sort="Item";
            ShoppingCart.DataBind();

            MyDataGrid.DataSource = CreateDataSource();
            MyDataGrid.DataBind();
        }

       

        ICollection CreateDataSource()
        {
            DataTable dt = new DataTable();
            DataRow dr;

            dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
            dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
            dt.Columns.Add(new DataColumn("DateTimeValue", typeof(DateTime)));
            dt.Columns.Add(new DataColumn("BoolValue", typeof(bool)));
            dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));

            for (int i = 0; i < 9; i++)
            {
                dr = dt.NewRow();
                dr[0] = i;
                dr[1] = "Item " + i.ToString();
                dr[2] = DateTime.Now;
                dr[3] = (i % 2 != 0) ? true : false;
                dr[4] = 1.23 * (i+1);

                dt.Rows.Add(dr);
            }

            DataView dv = new DataView(dt);
            return dv;
        }

        void Grid_CartCommand(object sender, DataGridCommandEventArgs e)
        {
   
            DataRow dr = Cart.NewRow();
       
            // e.Item is the row of the table where the command fired
            // For bound columns the value is stored in the Text property of TableCell
            TableCell itemCell = e.Item.Cells[1];
            TableCell priceCell = e.Item.Cells[2];
            string item = itemCell.Text;
            string price = priceCell.Text;
       
            if (((LinkButton)e.CommandSource).CommandName == "AddToCart")
            {
                dr[0] = item;
                dr[1] = price;
                Cart.Rows.Add(dr);
            }
            else
            {  //Remove from Cart
       
                CartView.RowFilter = "Item='"+item+"'";
                if (CartView.Count > 0)
                {   
                    CartView.Delete(0);
                }
                CartView.RowFilter = "";
            }
            ShoppingCart.DataBind();

        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
    }
}
Avatar billede agertoft Nybegynder
17. oktober 2004 - 14:48 #3
Jeg har sådan set bare taget et eksempel herfra: http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/ctrlref/webctrl/datagrid/datagrid5.src og lagt det i et nyt projekt. Det kompilerer fint, men jeg får ovenstående fejl, når jeg vil køre siden. Og jeg har oplevet det tidligere i mine egne projekter...
Avatar billede agertoft Nybegynder
17. oktober 2004 - 14:55 #4
Undskyld, det er eksempel 6 jeg har rodet med og som giver fejlen. Ovenstående er koden til eksempel 5. Jeg har lagt eksempel 6 koden ind istedet i mit projekt, men det giver samme fejl...
Avatar billede snepnet Nybegynder
17. oktober 2004 - 15:01 #5
Jeg er ret sikker på at det bare er din angivelse af namespaces der er gal :

Sådan her har du i den kode du har sendt.
namespace DataGrid

Og hvis du kigger i din Global.asax.cs vil du sikkert have en namespace der hedder det samme som det projekt du har oprettet.

hvis du ændrer denne :
namespace DataGrid

til det der står i global.asax.cs vil jeg tro den er fikset.

mvh
Avatar billede agertoft Nybegynder
17. oktober 2004 - 15:08 #6
Min Global.asax.cs ser sådan ud:

using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;

namespace DataGrid
{
    /// <summary>
    /// Summary description for Global.
    /// </summary>
    public class Global : System.Web.HttpApplication
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        public Global()
        {
            InitializeComponent();
        }   
       
        protected void Application_Start(Object sender, EventArgs e)
        {

        }

        protected void Session_Start(Object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(Object sender, EventArgs e)
        {

        }

        protected void Application_EndRequest(Object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(Object sender, EventArgs e)
        {

        }

        protected void Application_Error(Object sender, EventArgs e)
        {

        }

        protected void Session_End(Object sender, EventArgs e)
        {

        }

        protected void Application_End(Object sender, EventArgs e)
        {

        }
           
        #region Web Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.components = new System.ComponentModel.Container();
        }
        #endregion
    }
}

Hvis aspx-filen er interessant ser den således ud:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="DataGrid.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
  <body style="FONT: 10pt verdana">
      <form runat="server" ID="Form1">
        <h3><font face="Verdana">Using an Edit Command Column in DataGrid</font></h3>
    <asp:DataGrid id="MyDataGrid" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" OnEditCommand="MyDataGrid_Edit"    OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" AutoGenerateColumns="false">
               
      <Columns>
    <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false" HeaderText="Edit Command Column"
HeaderStyle-Wrap="false" />
                   
        <asp:BoundColumn HeaderText="Item" ReadOnly="true" DataField="Item" />
    <asp:BoundColumn HeaderText="Quantity" DataField="Qty" />
    <asp:BoundColumn HeaderText="Price" DataField="Price" />
    </Columns>
    </asp:DataGrid>
    </form>
</body>
</HTML>
Avatar billede snepnet Nybegynder
17. oktober 2004 - 15:10 #7
prøv at skifte alle de steder hvor der står
namespace DataGrid
ud med
namespace DataGridTest
Avatar billede snepnet Nybegynder
17. oktober 2004 - 15:10 #8
bruger du visual studio ?
Avatar billede agertoft Nybegynder
17. oktober 2004 - 15:10 #9
Kan det have noget med IIS serveren at gøre?
Avatar billede agertoft Nybegynder
17. oktober 2004 - 15:11 #10
Ja, det gør jeg..
Avatar billede snepnet Nybegynder
17. oktober 2004 - 15:11 #11
prøv at lave den ændring jeg foreslår, og så lav en rebuild af hele din solution.
mvh
Avatar billede agertoft Nybegynder
17. oktober 2004 - 15:13 #12
uhm, nu skiftede jeg namespace navnet ud med DataGridTest i Global.asax og i aspx filen... nu virker det. Mystisk! Må namespacet ikke have samme navn, som solution og projektet?

Læg et svar snepnet :)
Avatar billede snepnet Nybegynder
17. oktober 2004 - 15:15 #13
jo det er der ingen problemer i, men det kan være at den kløjs i at der er en klasse der hedder datagrid (selvom den egentlig ikke burde).
mvh
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