在DataGrid里添加DropDownLit控件

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:

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;
}
}
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. Beca

时间: 2024-11-05 06:07:32

在DataGrid里添加DropDownLit控件的相关文章

datepicker-silverlight的DataGrid中添加DatePicker控件使用滚动条滚动数据有误

问题描述 silverlight的DataGrid中添加DatePicker控件使用滚动条滚动数据有误 silverlight的DataGrid中添加DatePicker控件,初始设定DatePicker中的时间,连续使用滚动条滚动,初始设定DatePicker的值会随机改变. <sdk:DataGrid Grid.Row="1" HorizontalAlignment="Stretch" Name="dataGrid1" Vertical

嵌入式开发-在Window CE 操作系统中,如何在DataGrid 中添加ComboBox 控件

问题描述 在Window CE 操作系统中,如何在DataGrid 中添加ComboBox 控件 最近在开发手持机,因为公司要求,将ERP 系统置入到手持机中,发现在Window CE 系统中,很多 控件都无法使用.譬如说,要在DataGrid 中添加列,要求在DataGrid 中操作数据,下拉的 ComBobox 就没有,也没有DataGridComBoBox 列,如何处理,请各位兄弟指教. QQ:870088133 解决方案 CE版的控件是精简的,很多功能都没有.需要自己实现. 你说的添加C

在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件_自学过程

导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的price- 会导致异常.在前面一章里我们学习了如何在DataList的UpdateCommand事件处理中添加异常处理代码,以便在出现异常时捕捉它并显示友好的错误信息.然而理想的编辑界面应该包含验证控件,用来在第一时间里阻止用户输入一些非法数据. 本章我们将学习在DataList的EditItemTemplate里添加验证控件从而提供一个更安全的编辑界面,

ASP.NET 2.0数据教程之三十九:在编辑和插入界面里添加验证控件

返回"ASP.NET 2.0数据教程目录" 导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的 price- 会导致异常.在前面一章里我们学习了如何在DataList的 UpdateCommand事件处理中添加异常处理代码,以便在出现异常时捕捉它并显示友 好的错误信息.然而理想的编辑界面应该包含验证控件,用来在第一时间里阻止 用户输入一些非法数据. 第一步:从 处理 BLL和 DAL的异常复制例子

向DataGrid控件中添加ComboBox控件

combobox控件|datagrid|datagrid控件   在前面看到了很多关于怎样向DataGrid中添加ComboBox控件的方法.使用的方法全部都是在VB6.0中的方法. 我还是要说说在CSND中发贴的朋友. 现在所谓的.NET编程人员,不知道是怎么了呢!只是停留在使用.NET的编程环境中.并没有真正的了解面向对象的.NET编程思想. 我现在就利用继承DataGridColumnStyle完成向DataGrid中添加ComboBox. 希望这样有助于大家了解真正的面向对象编程的思想.

为DataGrid添加CheckBox控件

datagrid|控件 为DataGrid添加CheckBox控件,并实现"全选"功能.这里是实现的例子 VB.NET 版本 CheckBoxDataGrid.aspx <%@ Page Language="vb" AutoEventWireup="false" Codebehind="CheckBoxDataGrid.aspx.vb" Inherits="aspxWeb.CheckBoxDataGrid&qu

如何在DATAGRID中动态添加checkBox控件和CheckBoxList,再点按钮后读取选项?

问题描述 想作一个问卷系统,在DataGrid中加入checkBox控件和CheckBoxList,再按一个"结束"按钮,就可从Datagrid的开头一行一行读取选择的内容,并存入数据库?现在是一按"结束"按钮,所有动态添加的控件就没有了,如何保持住它? 解决方案 解决方案二:voidItem_DetailBound(Objectsender,DataGridItemEventArgse){if((ListItemType)e.Item.ItemType==List

如何在vs 2005里找.NET Framewok中需要添加的控件

问题描述 我在vs2005里找不到.NETFramewok中需要添加的控件AXmapcontorl,AXTOCcontol等控件求各位高手支援!!!急 解决方案 解决方案二:左侧工具箱,右键,选择项解决方案三:你建的是网站程序,哪有

关于在datagrid里添加超连接

问题描述 在Form里的datagrid,怎么动态地在datagrid里添加超连接啊,比如说我把一个字段变成超连接. 解决方案 解决方案二:用DataGridTableStyle个看能不能搞好,没试过.我只做过绑textbox的DataGridColoredTextBoxColumn.解决方案三:http://www.devage.com/研究一下这个控件的源码一定有收获.解决方案四:不明LZ在说什么