第1步:

页面放置AspxGridView控件, 设置列ComboBox1, ComboBox2列, 拟通过ComboBox1列更新联动ComboBox2列.

两个数据列均为"ComboBoxColumn"类型的列.

第2步:客户端源码:

  1. <!--客户端源码-->
  2. <dx:GridViewDataComboBoxColumn Caption="ComboBox1" FieldName="box1Column" VisibleIndex="0"
  3. Width="200px">
  4. <PropertiesComboBox ValueType="System.String">
  5. />
  6.  
  7. <dx:GridViewDataComboBoxColumn Caption="ComboBox2" FieldName="box2Column" VisibleIndex="0"
  8. Width="200px">
  9. <PropertiesComboBox ValueType="System.String">
  10. <ClientSideEvents SelectedIndexChanged="function(s, e) {
  11. onSelectedIndexChanged(s,e);
  12. }" />
  13.  
  14. <script language="javascript" type="text/javascript">
  15. function onSelectedIndexChanged(s, e) {
  16. grvList.GetEditor("box2Column").PerformCallback(grvDetailList.GetEditor("box1Column").GetValue());
  17. }
  18. </script>

 第3步:服务器端源码

  1. //编辑状态控件初始化事件方法
    protected void grvList_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
  2. {
  3. ASPxGridView grid = sender as ASPxGridView;
  4.  
  5. if (!grid.IsEditing) return;
  6. switch (e.Column.FieldName)
  7. {
  8.  
  9. //初始化Combox1数据
  10. case "ComboBox1":
  11. DevExpress.Web.ASPxEditors.ASPxComboBox box1 = e.Editor as DevExpress.Web.ASPxEditors.ASPxComboBox;
  12. DataTable dtBox1 = GetBox1Data();
  13. box1.DataSource = dtBox1;
  14. box1.ValueField = "valueField";
  15. box1.TextField = "textField";
  16. box1.DataBind();
  17. box1.SelectedItem = box1.Items.FindByValue(e.Value);
  18. break;
  19.  
  20. //初始化box2值
  21. case "ComboBox2":
  22. DevExpress.Web.ASPxEditors.ASPxComboBox box2 = e.Editor as DevExpress.Web.ASPxEditors.ASPxComboBox;
  23. long box1_value = Convert.ToInt64(grid.GetRowValuesByKeyValue(e.KeyValue, "ComboBox2"));  //取当前box1中的值.
  24. DataTable dtBox2 = GetBox2Data(box1_value);
  25. box2.DataSource = dtBox2;
  26. box2.ValueField = "valueField";
  27. box2.TextField = "textField";
  28. box2.DataBind();
  29. box2.SelectedItem = box2.Items.FindByValue(e.Value);
  30.  
  31. //注册ComboBox2 Callback事件,客户端ComboBox1 客户端 SelectItemChanged事件调用
  32. box2.Callback += new DevExpress.Web.ASPxClasses.CallbackEventHandlerBase(grvList_ComboBox2_Callback);
  33. break;
  34. }
  35. }

  36. //ComboBox2 Callback方法
  37. protected void grvList_ComboBox2_Callback(object sender, CallbackEventArgsBase e)
  38. {
  39. if (string.IsNullOrEmpty(e.Parameter)) return;
  40.  
  41. DevExpress.Web.ASPxEditors.ASPxComboBox box2 = sender as DevExpress.Web.ASPxEditors.ASPxComboBox;
  42.  
  43. DataTable dtBox2 = GetBox2Data(box1_value);
  44.  
  45. box2.DataSource = dtBox2;
  46. box2.ValueField = "valueField";
  47. box2.TextField = "textField";
  48. box2.DataBind();
  49.  
  50. box2.SelectedItem = box.Items.FindByValue(e.Parameter);
  51.  
  52. }

将显示的代码转换成文本形式显示通过这个事件方法.

  1. protected void grvDetailList_CustomColumnDisplayText(object sender, ASPxGridViewColumnDisplayTextEventArgs e)
  2. {
  3. switch (e.Column.FieldName)
  4. {
  5. case "box1Column":
  6. e.DisplayText = GetBox1TextByValue(Convert.ToInt64(e.Value));
  7. break;
  8.  
  9. case "box2Column":
  10. e.DisplayText = GetBox2TextByValue(Convert.ToInt64(e.Value));
  11. break;
  12.  
  13. }
  14. }

AspxGridView ComboBoxComlum列数据联动的更多相关文章

  1. DevExpress ASP.NET 使用经验谈(8)-ASPxGridView自定义列和基本事件

    为演示本节示例,我们在原来Users表增加[性别Gender].[兴趣爱好Hobbies],[CreateTime创建时间],[ModifyTime]修改时间这4个字段, ALTER TABLE [d ...

  2. BPM配置故事之案例14-数据字典与数据联动

    小明遇到了点麻烦,他昨天又收到了行政主管发来的邮件,要求把出差申请单改由H3 BPM进行,表单如下 行政主管的出差申请表 小明对表单进行了调整,设计出了一份适合在系统中使用的表单,但在"出差 ...

  3. Oracle 列数据聚合方法汇总

    网上流传众多列数据聚合方法,现将各方法整理汇总,以做备忘. wm_concat 该方法来自wmsys下的wm_concat函数,属于Oracle内部函数,返回值类型varchar2,最大字符数4000 ...

  4. c# 如何中List<object>中去掉object对象中的重复列数据?

    //去掉重复 var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.F ...

  5. 视图合并、hash join连接列数据分布不均匀引发的惨案

    表大小 SQL> select count(*) from agent.TB_AGENT_INFO; COUNT(*) ---------- 1751 SQL> select count( ...

  6. pentaho cde 选择性的显示多列数据

    在业务需求中,有时候会有这种需要,就是查出来可多列数据,而我只想画出来其中的一列或者说某一列,而pentaho会默认画出查出来的所有数据,而不断的更改数据源又太麻烦,这时就要用到resders方法了. ...

  7. pentaho cde数据联动,下拉框,文本框,图形

    先看一下效果: 开源bi工具pentaho数据联动,和传统意义上的更改数据不同,pentaho cde 需要一个监听来动态传值. 说一下需要注意的几个地方吧 1.参数是不能在两个图表中直接传递的,必须 ...

  8. 一个通用的DataGridView导出Excel扩展方法(支持列数据格式化)

    假如数据库表中某个字段存放的值“1”和“0”分别代表“是”和“否”,要在DataGridView中显示“是”和“否”,一般用两种方法,一种是在sql中直接判断获取,另一种是在DataGridView的 ...

  9. Jqgrid入门-Jqgrid列数据拖动(七)

    上一章提到在Jqgrid中如何设置二级表头,这一章节主要探讨Jqgrid表格里面的数据如果实现拖动功能,比如你想把第一行的数据拖到当前页的最后一行,或者其他位置.     Jqgrid表格插件自己没有 ...

随机推荐

  1. js面向对象,有利于复用

    需求:在网页上添加个天气预报. 以前总是在需要执行js的地方,直接写function(){}.在需要同样功能的地方直接copy,或者稍微修改. 然后在网上看看有没有好点的方法,然后就看到js面向对象编 ...

  2. C++的优秀特性3:构造函数和析构函数

    (转载请注明原创于潘多拉盒子) 构造函数和析构函数是C++中再熟悉不过的概念了,几乎每个了解一点C++的人都知道这两个概念是什么意思.一个对象的全部生命期中构造函数和析构函数执行的时机如下: 1. 为 ...

  3. CMSIS Example - Mail and Message

    /*---------------------------------------------------------------------------- * RL-ARM - RTX *----- ...

  4. C#操作注册表全攻略

    相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了.这东西对Windows系统来说可是比较重要的,也是病 毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项 ...

  5. Delphi开发OCX详细步骤总结

     首先要弄明白你要写的OCX是用在客户端还是用在服务器端    假如用在客户端: 1.创建  打开delphi 7,选择菜单"new"->"other"- ...

  6. [Node.js] CommonJS Modules

    CoomonJS modules provide a clean syntax for importing dependencies. This lesson will take a look at ...

  7. 如何在 iOS 8 中使用 Swift 实现本地通知(上)

    当你的应用在后台运行时,可以简单地使用本地通知把信息呈现给用户.它可以允许你显示 提醒.播放提示音和数字角标(badge).本地通知可以被以下的事件触发:计划好的时间点或者用户进入和离开某个地理区域. ...

  8. as3.0 interface接口使用方法

    [转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...

  9. 终端I/O之stty命令

    所有的终端选项标志,在程序中都可用tcgetattr和tcsetattr函数(http://www.cnblogs.com/nufangrensheng/p/3576682.html)进行检查和更改. ...

  10. c++ 设计模式1

    从面向对象谈起 1) 底层思维:向下,如何把握及其底层,从微观理解对象构造 (语言构造.编译转换.内存模型.运行时机制) 抽象思维: 向上,如何将我们的周围世界抽象为程序代码   (面向对象.组件封装 ...