Avatar billede websphere Nybegynder
29. februar 2004 - 16:39 Der er 6 kommentarer og
1 løsning

datagrid event

Hejsa,

Jeg har på en webform lavet et datagrid med nogle produktdata, men jeg vil gerne have at man i sidste kolonne kan vælge produktet. Så der har jeg lavet en

<asp:ButtonColumn Text="Add to favorits" CommandName="test"></asp:ButtonColumn>

Men hvordan trigger jeg det event i min behind code?
Avatar billede donpedrodelavega Nybegynder
29. februar 2004 - 16:42 #1
Avatar billede donpedrodelavega Nybegynder
29. februar 2004 - 16:50 #2
en anden...

Istedet for ButtonColumn anvender du en TemplateColumn.
I dens ItemTemplate laegger du en button.
Du binder en handler op paa ItemDataBound eventen paa dit grid (attributten OnItemDataBound)
I metoden som kaldes paa OnItemDataBound saetter du feks. CommandArgument paa din button i din TemplateColumn til at vaere identisk med dit produktIndeks og du binder en eventhandler op paa button's command event.
I metoden der svarer paa din button's command event har du adgang til CommandArgument som indeholder det valgte produktIndeks.

/ DP
Avatar billede donpedrodelavega Nybegynder
29. februar 2004 - 16:52 #3
en anden (anbefalet) maade at goere det paa...
http://aspnet.4guysfromrolla.com/articles/090402-1.aspx

/ DP
Avatar billede websphere Nybegynder
29. februar 2004 - 17:39 #4
Min Behind kode ser er med herunder, hvordan får jeg den til at trigge den rigtige metode ved brug af en komando?


    public class Products : CWPage
    {
        protected System.Web.UI.WebControls.DataGrid dataGrid;
        protected System.Web.UI.HtmlControls.HtmlGenericControl portfolioDiv;
        protected HtmlGenericControl    noProductsDiv;

   
        public Products()
        {
            this.Init += new System.EventHandler(Page_Init);
        }
        protected void Page_Init( object sender, EventArgs eventArgs )
        {
            //
            // CODEGEN: This call is required by the ASP+ WFC Form Designer.
            //
            this.Load += new System.EventHandler (this.Page_Load);
            InitializeComponent();
        }
        private void InitializeComponent()
        {
            this.dataGrid.SelectedIndexChanged += new System.EventHandler(this.dataGrid_SelectedIndexChanged);

        }
       
        protected void Page_Load( object sender, EventArgs eventArgs )
        {
           
            if ( VerifyConnection() )
            {               
                BuildProductList();
            }
        }

        private void BuildProductList()
        {
            // Display account summary info
           
           
            BLL.Products productList = new BLL.Products();
            DataTable dataTable = productList.BuildProductList();

            if ( dataTable.Rows.Count == 0 )
                noProductsDiv.Visible = true;
            else
            {
                noProductsDiv.Visible = false;

                dataGrid.DataSource = dataTable.DefaultView;
               
                dataGrid.DataBind();
            }
        }

        private void dataGrid_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            Response.Write("det virker");
        }
       

        private void dataGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            Response.Write("det virker");
        }


        private void dataGrid_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
        {
            // e.Item is the row of the table where the button was
            // clicked.
            string productID = e.Item.Cells[2].Text;
 
            if (e.CommandName == "AddToCart")
            {
                // Add code here to add the productID item to the cart.
            }
            dataGrid.DataBind();
        }

    }
}
Avatar billede donpedrodelavega Nybegynder
29. februar 2004 - 17:57 #5
1. sikre dig at OnItemCommand paa dit datagrid er bundet op til "dataGrid_ItemCommand" metoden.
2. saette commandname-attributen paa din buttoncolumn...

thats it...

/ DP
Avatar billede websphere Nybegynder
29. februar 2004 - 18:10 #6
Jeg kunne ikke få OnItemCommand til at virke, den fejlede med den atribute,

Men jeg kunne få MSDN metoden til at virke efter lidt "kludren" rundt med det :-)

        private void InitializeComponent()
        {
            this.dataGrid.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dataGrid_ItemCommand);

        }

Tak for hjælpen, sender du ikke lige et svar
Avatar billede donpedrodelavega Nybegynder
29. februar 2004 - 18:29 #7
no problem...

btw... jeg har erfaring med at frameworket ikke bryder sig om at man baade definerer eventhandlers deklarativt (feks. paa ASPX siden) og paa ens codebehind. Det er derfor en god ide at sikre sig at man ikke goer dette. Personligt synes jeg CodeBehind modellen er at foretraekke, men der er da saamaend ogsaa gode argumenter for at goere det deklarativt...

anyways... dette er et svar...

/ DP
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