有一种需求,样子大概是这样的

根据不同的选择条件进行筛选,根据筛选条件动态的显示结果,在本次应用程序中筛选的结果是放在gridview中显示,

本demo实现根据用户从下拉框中选择的数据对gridview进行数据筛选,下拉框数据从数据库中获取。

前台页面,定义一个dropdownlist和gridview就行了:

  <div><asp:DropDownList ID="DropDownList1" runat="server" onselectedindexchanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList><asp:GridView ID="GridView1" runat="server"></asp:GridView></div>

后台代码:绑定gridview数据大家根据自己情况写了。

如果你是用gridview的话下面2步就比较坑爹了,所以很多时候都不用gridview显示数据了。比较好的显示数据方法在.net中用repeater,都是被gridview折磨的人啊。

言归正传,首先:定义一个model类,和dataset里面的数据对应,后面将dateTable转换成list时用。

/// <summary>/// model类里面的两个属性其实是dropdownlist的Name和Value属性。在本例中两个属性都一样。/// </summary>class ToolDataModel{public string Name { get; set; }public string Value { get; set; }}

//将dataTable转换成list的model集合,并去掉list中重复项,用于绑定dropdownlist.private  List<ToolDataModel> DataTableToList(DataTable dt){List<ToolDataModel> modelList = new List<ToolDataModel>();int rowsCount = dt.Rows.Count;if (rowsCount > 0){ToolDataModel model;//遍历为list初始出for (int n = 0; n < rowsCount; n++){model = new ToolDataModel();if (dt.Rows[n]["m__strToolName"] != null && dt.Rows[n]["m__strToolName"].ToString() != ""){model.Name = dt.Rows[n]["m__strToolName"].ToString();}if (dt.Rows[n]["m__strToolName"] != null && dt.Rows[n]["m__strToolName"].ToString() != ""){model.Value = dt.Rows[n]["m__strToolName"].ToString();}modelList.Add(model);}}//去除list中重复项,这是一个很简单的算法,一看就懂了for (int i = 0; i < modelList.Count; i++){for (int j = i + 1; j < modelList.Count; j++){if (modelList[i].Name == modelList[j].Name){modelList.RemoveAt(modelList.LastIndexOf(modelList[i]));}}}return modelList;}

 protected void Page_Load(object sender, EventArgs e){if (!Page.IsPostBack){BindView();}}private void BindView() {GridView1.DataSource = DataTest.BindData();GridView1.DataBind();//将datatable转换成list集合再绑定数据,ToolDataModel是model类List<ToolDataModel> lstItems = DataTableToList(DataTest.BindData().Tables[0]);//本来是想用linq去掉dropdownlist中重复值,如下面代码,但是linq的distinct很坑爹,所以自己写了一个。//var query = (from data in lstItems//            select data).Distinct<ToolDataModel>();DropDownList1.DataSource = lstItems;//这里绑定model类里的两个属性。看出来为什么要设置name和value两个属性了吧。DropDownList1.DataTextField = "Name";DropDownList1.DataValueField = "Value";DropDownList1.DataBind();}protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e){DataView dv = new DataView();dv = DataTest.BindData().Tables[0].DefaultView;//m__strToolName是dataSet的一个属性,用DataView的RowFilter属性筛选datasetdv.RowFilter = "m__strToolName=" + DropDownList1.SelectedValue;GridView1.DataSource = dv;GridView1.DataBind();}

很简单的demo,希望对大家有所帮助,有更好的方法,欢迎大家留言。

注:如果确定dropdownlist中没有重复值,则可以不用辅助类也不用设置一个model类,直接奔主题。

转载于:https://www.cnblogs.com/bradwarden/archive/2012/02/22/2363229.html

dropdownList级联刷新gridView相关推荐

  1. 使用Javascript实现Dropdownlist级联操作中遇到的两个错误

    我的需求是这样的,在新闻发布系统中需要给要发布的新闻设置新闻类别,类别有两层,所以我想到了用Dropdownlist级联操作来实现. 实现过程: 使用ajax实现Dropdownlist的无刷新级联效 ...

  2. [转]Oracle分页之三:利用PagerView来实现无刷新GridView

    本文转自:http://www.cnblogs.com/scy251147/archive/2011/04/16/2018355.html 接上面一节,上面还存在问题就是分页控件使用的仍然是服务器端控 ...

  3. 实现DropDownList 无刷新的联动效果

    如图: 1.引用ajax.dll http://www.cnblogs.com/ou444/admin/Files.aspx 2.Web.config <httpHandlers>     ...

  4. ajax异步刷新gridview,如何刷新Gridview的内容(ajax)

    前台部分: 使用 ajax,局部刷新 GridView 进行数据绑定的简单实现 function GetData(p) { document.getElementById("d") ...

  5. ajax 如何使 dropdownlist 无刷新,Jquery实现无刷新DropDownList联动实现代码

    先看HTML,我们引用Jquery,放两个DropDownList: #ddlEmployeeCars { display:none; position:absolute; top:50px; lef ...

  6. ASP.NET DROPDOWNLIST无刷新联动(中文URL参数处理)

    请求页的两个下拉框触发事件,在传递参数的时候要把参数escape()一下,如果未对参数进行处理,且你传递的是一个中文参数,那么在服务页接受这个参数的时候就会接受未"乱码"(其实应该 ...

  7. 实现无刷新DropDownList联动效果

    在做一个文章添加功能时,想在选择大类后,自动将其所属二级小类显示出来,使用DropDownList的SelectedIndexChanged事件可以很容易实现,但每次选择后页面总要刷新一次,让人感觉很 ...

  8. 单元格编辑后级联汇总刷新

    单元格编辑 级联刷新 PDERPDB db = new PDERPDB(); int conid = 0; int pid = 0; string sql = ""; string ...

  9. DropDownList下拉绑定到GridView中实现功能

        前段时间有朋友让我帮着解决下DropDownList绑定到GridView的上遇到的问题,刚好这段时间自己也恰巧遇到了同样的需求,简单贴出代码讲解一下实现过程. <body>< ...

最新文章

  1. 17 博客后台富文本编辑
  2. [js高手之路] vue系列教程 - vue的事件绑定与方法(2)
  3. IEnumerator,IEnumerable,IEnumerableT
  4. 使用微软Outlook的收件Rule规则自动删除垃圾邮件
  5. C#的二进制序列化组件MessagePack介绍
  6. jmeter从mysql取值_Jmeter获取数据库值并作为参数请求(转载)
  7. CentOS配置服务开机自启
  8. 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名...
  9. SpringBoot2.0源码分析(二):整合ActiveMQ分析
  10. JSLite 的目标:缩小体积,做到 jQuery-free
  11. PPT文件如何大幅度瘦身、减小所占空间、提高播放速度?
  12. 数据分析 超市条码_阜康市超市存包柜人脸识别 - 阜康办公、文教
  13. 【光纤传输特性】图文并茂,你该了解这些
  14. 如何利用单片机的ADC模块(或者独立的ADC芯片)得到接入ADC管脚上的实际电压值?
  15. 不管她是否调皮、不管她成绩是否优秀、也不管她是否迷恋游戏,只想她能睁开眼睛。
  16. 用java在控制台实现扫雷
  17. Google验证码reCAPTCHA接入Web
  18. 删除文件提示需要计算机管理员权限,电脑怎么忽然删除文件夹需要管理员权限...
  19. android动态壁纸1——初步框架(有背景,能使用,仿可爱宝贝)
  20. python数据预处理总结

热门文章

  1. Hadoop---HDFS相关命令
  2. Lambda表达式的生动理解以及Java Lambda表达式常见使用场景
  3. [Ext JS] 组件浮动一篇通(floating、alignTo)
  4. oracle: unrecognized service,打开Linux ftp服务,如:vsftpd: unrecognized service
  5. java的获取声音振幅_录音获取声音振幅波形显示
  6. Color the ball(树状数组区间更新+单点求值)
  7. River Hopscotch
  8. OAuth2.0认证服务器之授权码存放
  9. Vue调试工具 vue-devtools的安装
  10. Spring项目在启动时报Error running 'ProviderC': Cannot start process, the working directory 'E:\ ' does not