posts - 56,  comments - 12,  trackbacks - 0

这个示例演示了怎么样在DataGrid中筛选数据

/*DataDridFilterForm.aspx

前台程序

*/

<%@ Page language="c#" Codebehind="DataGridFilterForm.aspx.cs" AutoEventWireup="false" Inherits="DataDridFilterDemo.DataDridFilterForm" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>WebForm1</title>
  <meta name="vs_snapToGrid" content="True">
  <meta name="vs_showGrid" content="True">
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <FONT face="宋体">
    <asp:DropDownList id="ddlCategory" style="Z-INDEX: 101; LEFT: 120px; POSITION: absolute; TOP: 16px"
     runat="server" Width="106px" Height="26px" AutoPostBack="True"></asp:DropDownList>
    <asp:Label id="lblCategory" style="Z-INDEX: 102; LEFT: 32px; POSITION: absolute; TOP: 24px"
     runat="server">Category:</asp:Label>
    <asp:Label id="lblPrice" style="Z-INDEX: 103; LEFT: 256px; POSITION: absolute; TOP: 24px" runat="server">Price Range:</asp:Label>
    <asp:DropDownList id="ddlPrice" style="Z-INDEX: 104; LEFT: 368px; POSITION: absolute; TOP: 16px" runat="server"
     AutoPostBack="True">
     <asp:ListItem Value="0" Selected="True">Any Price</asp:ListItem>
     <asp:ListItem Value="1">Cheap</asp:ListItem>
     <asp:ListItem Value="2">Moderate</asp:ListItem>
     <asp:ListItem Value="3">Expensive</asp:ListItem>
     <asp:ListItem Value="4">Absurdly Expensive</asp:ListItem>
    </asp:DropDownList>
    <asp:DataGrid id="dgProduct" style="Z-INDEX: 105; LEFT: 224px; POSITION: absolute; TOP: 96px"
     runat="server">
     <AlternatingItemStyle BackColor="#E8E6E6"></AlternatingItemStyle>
     <ItemStyle BackColor="#F1F1F1"></ItemStyle>
     <HeaderStyle BackColor="#C0C0FF"></HeaderStyle>
    </asp:DataGrid></FONT>
  </form>
 </body>
</HTML>

/*DataDridFilterForm.aspx.cs

后台处理程序

*/

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
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 DataDridFilterDemo
{
 /// <summary>
 /// WebForm1 的摘要说明。
 /// </summary>
 public class DataDridFilterForm : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.DropDownList ddlCategory;
  protected System.Web.UI.WebControls.Label lblCategory;
  protected System.Web.UI.WebControls.Label lblPrice;
  protected System.Web.UI.WebControls.DropDownList ddlPrice;
  protected System.Web.UI.WebControls.DataGrid dgProduct;
  public static string strCategory="CategoryID=1";
  public static string strPrice="UnitPrice>0";
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!IsPostBack)
   {
    FillDropDownList();
    DataFiller();
   }
  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.ddlCategory.SelectedIndexChanged += new System.EventHandler(this.FilterChange);
   this.ddlPrice.SelectedIndexChanged += new System.EventHandler(this.FilterChange);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void FillDropDownList()
  {
   string strCon="server=JOSEN;database=NorthWind;integrated security=true";
   string strSqlCategory="select CategoryName,CategoryID from Categories";
   
   SqlConnection objCon=new SqlConnection(strCon);
   SqlDataAdapter objAdpt=new SqlDataAdapter(strSqlCategory,objCon);

   DataSet ds=new DataSet();
   objAdpt.Fill(ds);

   ddlCategory.DataSource=ds;
   ddlCategory.DataTextField="CategoryName";
   ddlCategory.DataValueField="CategoryID";
   ddlCategory.DataBind();
  }

  private void DataFiller()
  {
   string strCon="server=JOSEN;database=NorthWind;integrated security=true";
   string strSqlProduct="select ProductID,ProductName,CategoryID,UnitPrice from Products";
   SqlConnection objCon=new SqlConnection(strCon);
   SqlDataAdapter objAdpt=new SqlDataAdapter(strSqlProduct,objCon);

   DataSet objds=new DataSet();
   objAdpt.Fill(objds,"dtProduct");

   DataView dvUK=new DataView(objds.Tables["dtProduct"]);
   dvUK.RowFilter=strCategory+" and "+strPrice;

   this.dgProduct.DataSource=dvUK;
   dgProduct.DataBind();
  }

  private void FilterChange(object sender, System.EventArgs e)
  {
   FilterByPrice(ddlPrice.SelectedItem.Text.ToString());
   FilterByCategory(ddlCategory.SelectedItem.Value.ToString());//注意这里,用的是CategoryID而不是CategoryName
   DataFiller();
  }
  private void FilterByPrice(string strChoice)
  {
   switch(strChoice)
   {
    case "Any Price":
     strPrice="UnitPrice>0";
     break;
    case "Cheap":
     strPrice="UnitPrice<20";
     break;
    case "Moderate":
     strPrice="UnitPrice>19 and UnitPrice<50";
     break;
    case "Expensive":
     strPrice="UnitPrice>=50";
     break;
    case "Absurdly Expensive":
     strPrice="UnitPrice>100";
     break;
   }
  }

  private void FilterByCategory(string strChoice)
  {
   strCategory="CategoryID="+strChoice;
  }
 }
}

苦笑枯 2007-01-19 00:16 发表评论

文章来源:http://www.blogjava.net/kuxiaoku/articles/94809.html
posted on 2007-01-19 00:16 苦笑枯 阅读(424) 评论(0)  编辑  收藏 所属分类: C#

只有注册用户登录后才能发表评论。


网站导航:
 
收藏来自互联网,仅供学习。若有侵权,请与我联系!

<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(2)

随笔分类(56)

随笔档案(56)

搜索

  •  

最新评论

阅读排行榜

评论排行榜