当前位置:编程学习 > C#/ASP.NET >>

Using DropDownList control in DataGrid

答案:

Using DropDownList control in DataGrid
By Eric Zheng
When I was developing a web application couple days ago, I found some interesting things about the datagrid, I want to share them with other vs.net programmers, so I wrote this article. This article will demonstrate how to use DropDownList control in datagrid.
 
The essential part of the DropDown.aspx file is the following:

<asp:DropDownList id="DropDownList1" runat="server"DataSource="<%#  GetCategory() %>"DataTextField="categoryname"DataValueField="categoryid"SelectedIndex='<%# GetCategoryID((string)DataBinder.Eval(Container.DataItem, "categoryname")) %>' />
In second line, we set the datasource of the dropdownlist control to a function 'GetCategory()', this function fetches the Category records from database and returns a datatable. In the last line, we set the SelectedIndex to a funciton 'GetCategoryID', this function takes the current Categoryname as its argument, and returns the locaiton(an integer) of the Categoryname, this enables the DorpDownList control to display the correct Categoryname for the current record.
The following is the C# code:
using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Data.OleDb;using System.Configuration;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 Management{        public class DropDown : System.Web.UI.Page    {        protected System.Web.UI.WebControls.DataGrid ProductGrid;        protected DataTable _category;        //new a database class to get records, ProductDb is a public class         //containing several functions        protected ProductDb pdb=new ProductDb();            public DropDown()        {            Page.Init += new System.EventHandler(Page_Init);        }        private void Page_Load(object sender, System.EventArgs e)        {            if(!IsPostBack)            {                BindProduct();                            }        }        private void Page_Init(object sender, EventArgs e)        {            InitializeComponent();        }        void BindProduct()        {            //pdb.GetProduct() returns a datatable to Product's datagrid            ProductGrid.DataSource=pdb.GetProduct();            ProductGrid.DataBind();        }        protected void Product_Edit(object sender, DataGridCommandEventArgs e)        {                        BindCategory();            ((DataGrid)sender).EditItemIndex=e.Item.ItemIndex;            BindProduct();        }        protected void Product_Cancel(object sender, DataGridCommandEventArgs e)        {            ProductGrid.EditItemIndex=-1;            BindProduct();        }        protected void Product_Update(object sender, DataGridCommandEventArgs e)        {            //get the currnet product name            string pname=e.Item.Cell[1].Controls[0].Text;            //get the current product price            string price=e.Item.Cell[2].Controls[0].Text;            //get the current categoryid    DropDownList ddl=(DropDownList)e.Item.Cells[3].FindControl("DropDownList1");            string categoryid=ddl.SelectedItem.Value;            //get the current productid            string pid=e.Item.Cell[4].Controls[0].Text;            //call pdb's update function            pdb.update(pid,pname,price,categoryid);                        ProductGrid.EditItemIndex=-1;            BindProduct();                    }        void BindCategory()        {            //pdb.FetchCategory() returns a datatable            _category=pdb.FetchCategory();                            }        protected DataTable GetCategory()        {            return _category;        }        protected int GetCategoryID(string cname)        {            for(int i=0;i<_category.DefaultView.Count;i++)            {            if (_category.DefaultView[i]["categoryname"].ToString()==cname)                {                    return i;                }            }            retu

上一个:web组件的通信---浅谈事件
下一个:KW大师精品文章赏析

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,