Avatar billede chrede Nybegynder
14. juli 2004 - 16:14 Der er 8 kommentarer og
1 løsning

points til snepnet

points til snepnet
tak for hjælpen!
Avatar billede keysersoze Ekspert
14. juli 2004 - 16:17 #1
hvilken hjælp? reference til spørgsmål?
Avatar billede chrede Nybegynder
14. juli 2004 - 16:18 #2
Avatar billede snepnet Nybegynder
14. juli 2004 - 16:18 #3
For redigereing af koden fra http://www.eksperten.dk/spm/519269

Til følgende :

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;
using System.Web.Security;

using ByteFX.Data.MySqlClient;


namespace Web100.tmpgalleri
{
    public class tmpgalleri : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.PlaceHolder ButtonPlaceHolder;
        protected System.Web.UI.WebControls.PlaceHolder GalleriPlaceHolder;
        protected System.Web.UI.WebControls.Label Label1;
        private DataAccess da = new DataAccess();

        protected int PushedButtonId
        {
            get{return (object)Session["PushedButtonId"] != null ? (int)Session["PushedButtonId"] : -1;}
            set{Session["PushedButtonId"] = value;}
        }
                   
        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);

        }
       
        private void Page_Load(object sender, System.EventArgs e)
        {
            disableCaching();
           
            InsertTopButtons();
           
            if (PushedButtonId != -1)
            {
                InsertLowerButtons(PushedButtonId, true);
            }
        }

        protected override void OnPreRender(EventArgs e)
        {
            // vi sikrer disposing inden vi afleverer siden
            da.Dispose();
            base.OnPreRender (e);
        }

        protected override void OnError(EventArgs e)
        {
            Response.Write("Der skete en fejl : " + Server.GetLastError().Message);
            Server.ClearError();
        }


        private void disableCaching()
        {
            System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            System.Web.HttpContext.Current.Response.Cache.SetExpires(System.DateTime.Now);
            System.Web.HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
            System.Web.HttpContext.Current.Response.AddHeader("cache-control", "no-store");
            System.Web.HttpContext.Current.Response.Expires = 0;
        }

        private void InsertTopButtons()
        {           
            MySqlDataReader reader = da.GetTopButtons();
            while (reader.Read())
            {
                LinkButton button = new LinkButton();
                button.CommandArgument = reader.GetString(0);
                button.Text = reader.GetString(1);
                button.Click += new EventHandler(this.Group_Selected);
                ButtonPlaceHolder.Controls.Add(button);
                ButtonPlaceHolder.Controls.Add(new LiteralControl(" "));
            }
       
            da.CloseReader(reader);
        }

        public void Group_Selected(object sender, EventArgs e)
        {   
            PushedButtonId = int.Parse(((LinkButton)sender).CommandArgument);
            Reload();
        }

        private void InsertLowerButtons(int topButtonId, bool callFromPaLo)
        {
            GalleriPlaceHolder.Controls.Clear();

            MySqlDataReader reader = da.GetLowerButtons(topButtonId, callFromPaLo);

            while (reader.Read())
            {
                LinkButton galButton = new LinkButton();
                galButton.CommandArgument = reader.GetString(0);
                galButton.Text = reader.GetString(1);
                galButton.Click += new EventHandler(this.Gallery_Selected);
                GalleriPlaceHolder.Controls.Add(galButton);
                GalleriPlaceHolder.Controls.Add(new LiteralControl("<br>"));               
            }
       
            da.CloseReader(reader);
        }
           
       
        public void Gallery_Selected(object sender, EventArgs e)
        {
            Label1.Text = "Gallery selected sender: " + ((LinkButton)sender).Text;
        }

        private void Reload()
        {
            Response.Redirect(Request.RawUrl, true);
        }
    }
}
Avatar billede snepnet Nybegynder
14. juli 2004 - 16:19 #4
og DataAcces som følger :

using System;
using System.ComponentModel;
using System.Web.UI;
using System.Data;

using ByteFX.Data.MySqlClient;

namespace Web100.tmpgalleri
{
    public class Settings
    {
        public static string ConnectionString
        {   
            get{return System.Configuration.ConfigurationSettings.AppSettings["MySqlConn"];}
        }
    }

    public class DataAccess : IDisposable
    {
        private bool disposed = false;

        private MySqlConnection con;
        private MySqlCommand com;
        private String sql;

        public DataAccess()
        {
        }
   
        ~DataAccess()
        {
            Dispose(false);
        }

        private void connectDB()
        {   
            if(con == null)
                con = new MySqlConnection(Settings.ConnectionString);
            con.Open();
        }

        private MySqlDataReader QueryDB(String sql)
        {
            connectDB();
            if(com == null)
                com = new MySqlCommand(sql, con);
            else
                com.CommandText = sql;
           
            return com.ExecuteReader();
        }

        public void CloseReader(MySqlDataReader reader)
        {
            reader.Close();
           
            if(con != null && con.State == ConnectionState.Open)
                con.Close();
        }

        public MySqlDataReader GetTopButtons()
        {
            sql = "";
            sql += "( ";
            sql += "SELECT group.id, group.name ";
            sql += "FROM `group`, user_group, user ";
            sql += "WHERE user_group.group = group.id ";
            sql += "AND user_group.user = user.id ";
            sql += "AND user.username = 'ib' ";
            sql += ") ";
            sql += "UNION ";
            sql += "( ";
            sql += "SELECT group.id, group.name ";
            sql += "FROM `group`, gallery, user_gallery, user ";
            sql += "WHERE group.id = gallery.group ";
            sql += "AND user_gallery.gallery = gallery.id ";
            sql += "AND user_gallery.user = user.id ";
            sql += "AND user.username = 'ib' ";
            sql += ") ";
                       
            try
            {
                return QueryDB(sql);
            }
            catch (ByteFX.Data.MySqlClient.MySqlException er)
            {
                throw er;
            }
        }
               
        public MySqlDataReader GetLowerButtons(Int32 ID, bool callFromPaLo)
        {
            sql = "";
            sql += "( ";
            sql += "SELECT gallery.id, gallery.name ";
            sql += "FROM user_group, gallery, user ";
            sql += "WHERE user_group.group = gallery.group ";
            sql += "AND user_group.user = user.id ";
            sql += "AND user.username = 'ib' ";
            sql += "AND gallery.group = " + ID + " ";
            sql += ") ";
            sql += "UNION ";
            sql += "( ";
            sql += "SELECT gallery.id, gallery.name ";
            sql += "FROM user_gallery, gallery, user ";
            sql += "WHERE user_gallery.gallery = gallery.id ";
            sql += "AND user_gallery.user = user.id ";
            sql += "AND user.username = 'ib' ";
            sql += "AND gallery.group = " + ID + " ";
            sql += ") ";           
           
            try
            {               
                return QueryDB(sql);
            }
           
            catch (ByteFX.Data.MySqlClient.MySqlException er)
            {
                throw er;
            }           
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(true);
        }

        private void Dispose(bool disposing)
        {
            if(!this.disposed)
            {
                if(disposing)
                {
                    if(con != null && con.State == ConnectionState.Open)
                        con.Close();                   
                }           
            }
            disposed = true;       
        }
    }
}
Avatar billede snepnet Nybegynder
14. juli 2004 - 16:24 #5
>> keysersoze - håber det er ok.
Avatar billede thrytter Nybegynder
15. juli 2004 - 10:52 #6
snepset >> Jeg er ikke meget for regler, men mener ligesom keysersoze at Ekspertens regler http://www.eksperten.dk/regler.phtml skal overholdes.

Et lille uddrag:

2.1 Det er ikke tilladt at:

stk 9. misbruge Eksperten.dk's pointsystem

stk 12. tildele point for en løsning der ikke er tilgængelig for alle Ekspertens brugere.

stk 13. tildele point for en opgave løst uden om Eksperten (feks. opgaver løst via mail, icq eller telefon).

stk 15. udlove mere end 200 point for et spørgsmål ved at dele det over flere spørgsmål.

Bare en lille kommentar...
Avatar billede chrede Nybegynder
15. juli 2004 - 11:39 #7
Stk.9: Jeg har ikke bevidst misbrugt reglerne.
stk.12. Løsning er tilgængelig.
stk.13. løsning er løst igennem eksperten, der er dog brugt email som hjælpemiddel.
stk.15. Den regler har jeg ikke været opmærksom på, og dette beklager jeg!
Avatar billede snepnet Nybegynder
15. juli 2004 - 13:23 #8
Hej thrytter :o)

Jeg er her ikke for point, og skrev derfor til chrede at han ikke skulle oprette denne "pointoverdragelse".
Chrede mener dog at have lovet at uddele point, hvis hans eksisterende kode kunne bringes til at fungere, hvilket han utrykte interesse for at overholde.

Det oprindelige spørgsmål (http://www.eksperten.dk/spm/519269) er blevet besvaret med det skelet jeg postede, da spørgsmålet var af generel karakter (altså hvordan man på et givet tidspunkt i page-lifecycle kunne trække information ud af kontroltræet.

Undervejs i spørgsmålet ønskes det så af chrede at få den eksisterende kode til at fungere, hvilket så er besvaret i dette spørgsmål, hvor den komplette kode er publiceret.
Det fremgår af koden er der er tale om to vidt forskellige løsninger, hvor den ene som nænvt er af generel karakter, og den anden er rettelser i chrede's oprindelige kode.

Jeg vil derfor mene at der sagtens kunne være oprettet 2 forskellige spørgsmål (hvilket jf. reglerne så skulle give et pointloft på 400 point), men jeg vil give dig fuldstændig ret i, at da det ikke er det der er sket, er der tale om en komprommitering af regelsættet her på eksperten.

Det kan være lidt upraktisk at udveklse "filer" via eksperten, hvorfor chrede sendte sine filer til mig pr. email. Disse filer har jeg så rettet i, og lagt her under dette spørgsmål, hvilket jeg har gjort i god tro om at relevant information vedr. besvarelsen er blevet publiceret her på eksperten på behørig vis.

Jeg er her ikke på nogen måde for at genere folk, og de point jeg bruger på artikler dækkes rigeligt af det der dagligt kommer på kontoen.

Jeg mener som nævnt at 2 forskellige spørgsmål er blevet besvaret, men da overskriften her ikke er et spørgsmål har jeg oprette en pointoverdragelse tilsvarende denne, hvor 60 point kan tilbageføres til chrede.
Således skulle chrede være kommet af med de 200 point han følte han satte på højkant, og den samlede pointsum skulle være 200.

Jeg mener ikke jeg kan gøre mere for at få tingene bragt iorden, men skulle du være uenig i det, håber jeg du vil gøre opmærksom på det - meget gerne med et forslag til hvad der yderligere skal gøres.

I håbet om at alt er ok, og med venlig hilsen :o)
Avatar billede snepnet Nybegynder
15. juli 2004 - 15:25 #9
Det er for øvrigt her points kan hentes af chrede :o)
http://www.eksperten.dk/spm/520131
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



IT-JOB

Unik System Design A/S

Marketing Manager

KMD A/S

SAP Architect

Statens IT

Netværksspecialist

Unik System Design A/S

Erfaren scrum master




Læses lige nu