dev控件apsxgridview记录3

编辑列表时需要下拉框的级联:下面用公司和公司部门为例

首先绑定列表数据时不能做级联限制否则下拉列表会显示不完全,这样就需要在点击添加和编辑的时候做筛选,还有就是选择下拉时筛选

在点击添加和编辑时的级联:

用事件:oncelleditorinitialize="aspxGridUser_CellEditorInitialize"

private int compid = -1;//保存公司ID
        protected void aspxGridUser_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
        {
            if (aspxGridUser.IsEditing && e.Column.FieldName == "CompanyId")
            {
                ASPxComboBox comboBox = e.Editor as ASPxComboBox;
                if (comboBox.Value!=null)
                {
                    compid = Convert.ToInt32(comboBox.Value.ToString());//公司ID
                }
                
            } 
            if (aspxGridUser.IsEditing && e.Column.FieldName == "DeptId")
            {
                ASPxComboBox comboBox = e.Editor as ASPxComboBox;
                List<CompanyInfo> lst = new CompanyInfoService().GetCompanyDeptList(compid).ToList();//部门数据
                comboBox.DataSource = lst;
                comboBox.TextField = "CompanyName";
                comboBox.ValueField = "Id";
                comboBox.DataBind();
            }  
        }

然后在页面中选择公司时,需要的联动,用js和ajax实现:

页面:

<dx:GridViewDataComboBoxColumn Caption="所属公司" VisibleIndex="13" FieldName="CompanyId" Width="10%" >
                     <PropertiesComboBox TextField="所属公司" ValueField="CompanyId" EnableSynchronization="False" ValueType="System.String" Spacing="0">
                    <ValidationSettings  ErrorDisplayMode="ImageWithTooltip" > <RequiredField   IsRequired="true" ErrorText="公司不能为空"/></ValidationSettings>
                    <ClientSideEvents SelectedIndexChanged="function(s, e) { OnDepChanged(s); }"></ClientSideEvents>
                </PropertiesComboBox>
                        <Settings AutoFilterCondition="Equals"></Settings>
                    </dx:GridViewDataComboBoxColumn>

js:

function OnDepChanged(cmbCompancy) {
             var comp = cmbCompancy;
             var dep = aspxGridUser.GetEditor("DeptId");
             $.ajax({
                 url: "GetUserDep.ashx",
                 data: { "comId": comp.GetValue() },
                 cache: false,
                 async: false,
                 success: function (data) {
                     var deplist = eval(data);
                     dep.ClearItems();
                     for (var i = 0; i<deplist.length ; i++) {
                         
                         dep.AddItem(deplist[i].text, deplist[i].value);
                     }
                 },
                 error: function (XMLHttpRequest, textStatus, errorThrown) {
                     alert(errorThrown);
                 }
             });
         }

GetUserDep.ashx实现的代码:

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string comId = context.Request["comId"].ToString();
            List<CompanyInfo> lst = new CompanyInfoService().GetCompanyDeptList(Convert.ToInt32(comId)).ToList();
            string dep = "";
            for (int i = 0; i < lst.Count; i++)
            {
                dep += " {text:'" + lst[i].CompanyName + "',value:'" + lst[i].Id  + "'}";
            }
            dep = "[" + dep + "]";
            context.Response.Write(dep);
        }

这样就可以实现联动了。

注:这样实现的联动在做验证时不能用后台验证了,只能做前台验证,否则联动就会失效




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值