AspxGridView ComboBoxComlum列数据联动

第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;
              
            }
        }

 

转载于:https://www.cnblogs.com/ybtools/p/3686119.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值