Avatar billede laurits Nybegynder
21. april 2005 - 22:22 Der er 4 kommentarer og
1 løsning

Delete fra Datagrid

Jeg forsøger at lave en hjemmeside med et datagrid der henter data fra en DB.
Til datagrid'et er der en 'delete' funktion, som jeg ikke kan få til at fungere.
Er der nogen der vil kigge på det jeg har lavet og hjælpe med at få det til at virke.
PS. det jeg har lavet er sikkert langt fra rigtigt da jeg ikke er mester i C# kodning!! (Endnu :-) )
Avatar billede arne_v Ekspert
21. april 2005 - 22:23 #1
post din kode så kigger vi på det
Avatar billede laurits Nybegynder
21. april 2005 - 22:26 #2
okay der er to klasser DBProjekt og DBConnection (der håndtere DB kald)
Here goes:
//DBProjekt.aspx.cs
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using Microsoft.Data.Odbc;
using DBtest;

namespace DBtest
{
    public class DBProjekt : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.WebControls.Label Label2;
        protected System.Web.UI.WebControls.Label Label3;
        protected System.Web.UI.WebControls.Label Label4;
        protected System.Web.UI.WebControls.Button Button1;
        protected System.Web.UI.WebControls.Button Button2;
        protected System.Web.UI.WebControls.Button Button3;
        protected System.Web.UI.WebControls.DataGrid DataGrid1; 
        protected System.Web.UI.WebControls.Image Image1;           
       
        private DBConnection dbcon;   
        private DataSet ds;

        private string a = "Place";
        private string b = "Station";       
        private string c = "Palette";           
        protected Image img;       

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);           
        }

        private void InitializeComponent()
        { 
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Button3.Click += new System.EventHandler(this.Button3_Click);
            this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);
            this.Button2.Click += new System.EventHandler(this.Button2_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
     
        private void Button1_Click(object sender, System.EventArgs e)
        {
            Button1.Text = a;       
            dbcon = new DBConnection();       
            ds = dbcon.selectOdbcSrvRows(a);
            DataGrid1.DataSource=ds.Tables[a].DefaultView;
            DataBind();
        }

        private void Button2_Click(object sender, System.EventArgs e)
        {
            Button2.Text = b;       
            dbcon = new DBConnection();
            ds = dbcon.selectOdbcSrvRows(b);
            DataGrid1.DataSource=ds.Tables[b].DefaultView;
            DataBind();
        }

        private void Button3_Click(object sender, System.EventArgs e)
        {
            Button3.Text = c;       
            dbcon = new DBConnection();
            ds = dbcon.selectOdbcSrvRows(c);
            DataGrid1.DataSource=ds.Tables[c].DefaultView;
            DataBind();       
        }   

        public int Counter()
        {
            Application.Lock();
            object ctr = Application["hitCounter"];
            int n = ctr == null ? 0 : (int)ctr;
            Application["hitCounter"] = ++n;
            Application.UnLock();
            return n;
        }

        private void Page_Load(object sender, System.EventArgs e)
        {
            if(!IsPostBack)
            {
                Label4.Text = "Besøgende: " + Counter();
            }           
        }

        private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            string deleteCmd = "DELETE from Users WHERE UserID = @Id";
 
            OdbcCommand myCommand = new OdbcCommand(deleteCmd, dbcon);
            myCommand.Parameters.Add(new OdbcParameter("@Id", OdbcDbType.NVarChar, 11));
            myCommand.Parameters["@Id"].Value = DataGrid1.DataKeys[(int)e.Item.ItemIndex];
           
            myCommand.Connection.Open();
            try
            {
                myCommand.ExecuteNonQuery();   
            }
            catch (Exception)
            {    }
            myCommand.Connection.Close();
            BindGrid();
        }

        public void BindGrid()
        {
            OdbcDataAdapter myCommand = new OdbcDataAdapter("select * from Users", dbcon);

            DataSet ds = new DataSet();
            myCommand.Fill(ds, "Users");

            DataGrid1.DataSource=ds.Tables["Users"].DefaultView;
            DataGrid1.DataBind();
        }   
    }
}


//DBConnection.cs
using System;
using System.IO;
using System.Data;
using System.Collections;
using Microsoft.Data.Odbc;
using System.Windows.Forms;

namespace DBtest
{
    public class DBConnection
    {
        private string connectionString = @"Driver={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=simcon;";
        private DataSet dataset;
        private OdbcConnection odbcConn;
        private OdbcDataAdapter adapter;
        private FileStream fs;
        private OdbcCommand myCommand;
        private OdbcDataReader myReader;
        private string mySelectQuery;

        public DBConnection()
        {   
            odbcConn = new OdbcConnection(connectionString);
            adapter = new OdbcDataAdapter();
            myCommand = new OdbcCommand();
            odbcConn.Open();
        }

        public DataSet selectOdbcSrvRows(string tableName)
        {
            dataset = new DataSet();
            adapter.SelectCommand = new OdbcCommand("SELECT * FROM " + tableName, odbcConn);
            adapter.Fill(dataset, tableName);
            odbcConn.Close();
            return dataset;
        }       
    }
}
Avatar billede burningice Nybegynder
22. april 2005 - 00:34 #3
bliver dit ID for brugeren vist i dit grid nogen steder? i så fald kan du få fat i det på denne måde:

int.Parse(e.Item.Cells[index].Text);
Avatar billede laurits Nybegynder
24. april 2005 - 17:18 #4
.
Avatar billede burningice Nybegynder
25. april 2005 - 12:53 #5
fair nok
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