第1步:

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

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

第2步:客户端源码:

<!--客户端源码-->
<dx:GridViewDataComboBoxColumn Caption="ComboBox1" FieldName="box1Column" VisibleIndex="0"
Width="200px">
<PropertiesComboBox ValueType="System.String">
/> <dx:GridViewDataComboBoxColumn Caption="ComboBox2" FieldName="box2Column" VisibleIndex="0"
Width="200px">
<PropertiesComboBox ValueType="System.String">
<ClientSideEvents SelectedIndexChanged="function(s, e) {
onSelectedIndexChanged(s,e);
}" /> <script language="javascript" type="text/javascript">
function onSelectedIndexChanged(s, e) {
grvList.GetEditor("box2Column").PerformCallback(grvDetailList.GetEditor("box1Column").GetValue());
}
</script>

 第3步:服务器端源码

//编辑状态控件初始化事件方法
protected void grvList_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
{
ASPxGridView grid = sender as ASPxGridView; if (!grid.IsEditing) return;
switch (e.Column.FieldName)
{ //初始化Combox1数据
case "ComboBox1":
DevExpress.Web.ASPxEditors.ASPxComboBox box1 = e.Editor as DevExpress.Web.ASPxEditors.ASPxComboBox;
DataTable dtBox1 = GetBox1Data();
box1.DataSource = dtBox1;
box1.ValueField = "valueField";
box1.TextField = "textField";
box1.DataBind();
box1.SelectedItem = box1.Items.FindByValue(e.Value);
break; //初始化box2值
case "ComboBox2":
DevExpress.Web.ASPxEditors.ASPxComboBox box2 = e.Editor as DevExpress.Web.ASPxEditors.ASPxComboBox;
long box1_value = Convert.ToInt64(grid.GetRowValuesByKeyValue(e.KeyValue, "ComboBox2"));  //取当前box1中的值.
DataTable dtBox2 = GetBox2Data(box1_value);
box2.DataSource = dtBox2;
box2.ValueField = "valueField";
box2.TextField = "textField";
box2.DataBind();
box2.SelectedItem = box2.Items.FindByValue(e.Value); //注册ComboBox2 Callback事件,客户端ComboBox1 客户端 SelectItemChanged事件调用
box2.Callback += new DevExpress.Web.ASPxClasses.CallbackEventHandlerBase(grvList_ComboBox2_Callback);
break;
}
}

//ComboBox2 Callback方法
protected void grvList_ComboBox2_Callback(object sender, CallbackEventArgsBase e)
{
if (string.IsNullOrEmpty(e.Parameter)) return; DevExpress.Web.ASPxEditors.ASPxComboBox box2 = sender as DevExpress.Web.ASPxEditors.ASPxComboBox; DataTable dtBox2 = GetBox2Data(box1_value); box2.DataSource = dtBox2;
box2.ValueField = "valueField";
box2.TextField = "textField";
box2.DataBind(); box2.SelectedItem = box.Items.FindByValue(e.Parameter); }

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

 protected void grvDetailList_CustomColumnDisplayText(object sender, ASPxGridViewColumnDisplayTextEventArgs e)
{
switch (e.Column.FieldName)
{
case "box1Column":
e.DisplayText = GetBox1TextByValue(Convert.ToInt64(e.Value));
break; case "box2Column":
e.DisplayText = GetBox2TextByValue(Convert.ToInt64(e.Value));
break; }
}

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. 前端相关的seo技术

    相信大部分的前端开发人员应该深知seo对我们的重要性,所以个人认为平台在开发初期就应该要考虑好seo优化的问题,不然做出来的页面,就算是效果很炫,功能很强,但是对搜索引擎也不友善.如果等到成熟时期再来 ...

  2. sc7731 Android 5.1 LCD驱动简明笔记之二

    此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebu ...

  3. Active Low-Pass Filter Design 低通滤波器设计

    2nd order RC Low-pass Filter Center frequency    fc = 23405.13869[Hz] Q factor                  Q = ...

  4. Slony-I的限制

    限制如下: http://slony.info/documentation/limitations.html Slony-I does not automatically replicate •Cha ...

  5. C++ Primer 学习笔记_46_STL实践与分析(20)--容器特有的算法

    STL实践与分析 --容器特有的算法 与其它顺序容器所支持的操作相比,标准库为list容器定义了更精细的操作集合,使它不必仅仅依赖于泛型操作.当中非常大的一个原因就是list容器不是依照内存中的顺序进 ...

  6. javascript中字符串格式转化成json对象记录

    什么是JSON JSON(JavaScript Object Notation)是一种优美的JavaScript对象创建方法.JSON也是一种轻量级数据交换格式.JSON非常易于人阅读与编写,同时利于 ...

  7. CheckBoxList 只能选2个选项

    // ////下面判断用户是否多选,每选择一次比较一次,看是否超过规定名额 //string ClickedItem = Request.Form["__EVENTTARGET"] ...

  8. .NET多线程执行函数

    前面几篇文章一直在写LINQ,这里为什么会出现多线程?原因是DebugLZQ在写一个LINQ综合Demo的时候遇到了多线程,便停下手来整理一下.关于多线程的文章,园子里很多很多,因此关于多线程理论性的 ...

  9. AngularJS特性

    如果你不熟悉什么是Angular.js的话,小编我强烈推荐你阅读 Javascript教程:AngularJS的五个超酷特性.简单来说Angular.js是google开发者设计和开发的一套前端开发框 ...

  10. 基于python3的手机号生成脚本

    今天利用业余,自己突发想法来写个手机号码生成的脚本,其实自己用的方法很简单,想必肯定又不少人写的比我的好,我只是自己闲来无聊搞一下, #作者:雷子 #qq:952943386 #日期:2016年7月1 ...