再datagrid中使用droplist。。。。重要的是其中的几个用法
2008-05-01 03:46
225 查看
在这里重要的不是要说明droplist再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
//相信Productb是作者自定义的类
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;//**看见sender的用法了吗?很多人都很奇怪这个得用处,这就是一个例子
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;
}
}
return 0;
}
#region Web Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
The key points of this C# file are:
1.In Product_Edit() function, you have to call BindCategory() to set the _category datatable first, and then set the EditItemIndex for the datagrid, and at last, call BindProduct() function. The DropDownList control will not display anyting if you reverse this order. Because once you set the EditItemIndex, the datagrid begings rendering records, and at the same time, the DropDownList control access the function 'GetCategory()' to get the data source, if 'GetCategory()' returns nothing, you will not get anything of course. Just remember: before setting EditItemIndex of datagrid, set the data source of the control.
2.In Product_Update() function, You have no access to the DropDownList control directly which is embeded in the datagrid, the solution of getting the selected value of DropDownList control is the 'FindControl()' function. This function takes the DropDownList control's name as its argument, and return the DropDownList control it found, so that you can use the return control to get the selected value. Just remember: use FindControl() function to return any control you want to find in the datagrid, such as text box, text area, label, calen
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
//相信Productb是作者自定义的类
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;//**看见sender的用法了吗?很多人都很奇怪这个得用处,这就是一个例子
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;
}
}
return 0;
}
#region Web Form Designer generated code
///
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
The key points of this C# file are:
1.In Product_Edit() function, you have to call BindCategory() to set the _category datatable first, and then set the EditItemIndex for the datagrid, and at last, call BindProduct() function. The DropDownList control will not display anyting if you reverse this order. Because once you set the EditItemIndex, the datagrid begings rendering records, and at the same time, the DropDownList control access the function 'GetCategory()' to get the data source, if 'GetCategory()' returns nothing, you will not get anything of course. Just remember: before setting EditItemIndex of datagrid, set the data source of the control.
2.In Product_Update() function, You have no access to the DropDownList control directly which is embeded in the datagrid, the solution of getting the selected value of DropDownList control is the 'FindControl()' function. This function takes the DropDownList control's name as its argument, and return the DropDownList control it found, so that you can use the return control to get the selected value. Just remember: use FindControl() function to return any control you want to find in the datagrid, such as text box, text area, label, calen
相关文章推荐
- 再datagrid中使用droplist。。。。重要的是其中的几个用法
- None用法+连接字符串优先使用join +用format而不是%+区别可变对象和不可变对象(list的深拷贝和浅拷贝)
- UCOS-II几个重要的函数使用详解
- 使用链表(LinkedList) mix-in 到其中的栈(Stack)
- Keras中几个重要函数用法
- WebService(二)-->关于 WebService 的几个问题和重要术语及相关工具使用(多图)
- 在C编程中使用到的几个重要关键字之一const
- REGEXP_REPLACE 和REGEXP_SUBSTR函数的用法(以及在其中如何使用正则表达式)
- Ubuntu下几个重要apt-get命令用法与加速UBUNTU (robby实施记录)
- Ubuntu下几个重要apt-get命令用法与加速UBUNTU
- OIS几个重要的类的使用
- 将使用DataGrid进行数据绑定,使用Javascript控制当选中其中的checkbox时,该行颜色改变
- Keras中几个重要函数用法
- android gridview几个重要属性(android:listSelector自带内部padding分析)
- 在C编程中使用到的几个重要关键字之一volatile
- 在C编程中使用到的几个重要关键字之一volatile
- 使用ffmpeg进行解码的基本流程 和几个重要函数
- 几个重要函数的用法
- 关于shape和layer-list结合使用的一点用法
- GDB在调试Zend引擎时的几个重要的用法