【原创】有关Silverlight中“DataGrid中级联动态绑定父/子ComboBox ”的示例。

尝试了很多种方案,由于Datagrid动态生成的每行父子comboBox的Name的不确定性,给父ComboBox绑定事件中获取 子ComboBox很难根据Name获取到。

花了不少时间和公司同事商讨,最终方案如下:

注:父子combobox分别代表: 主行业/子行业

  private void CurrentRowIndusrtylist_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBox combobox = sender as ComboBox;
            //获取另一个conbox控件
            CurrentRowIndusrtylist = (sender as ComboBox);
            if (CurrentRowIndusrtylist != null)
            {
                DataGridCell dg = (DataGridCell)(CurrentRowIndusrtylist.Parent);//关键用法
                if (DataGridRow.GetRowContainingElement(dg) != null)
                {
                    CurrentRowIndusrtySublist = this.dataGrid9.Columns[3].GetCellContent(DataGridRow.GetRowContainingElement(dg)) as ComboBox;//关键用法
                    if (CurrentRowIndusrtySublist != null)
                        BindSubIndusrtyCodes();//动态去绑定子combobox
                }
            }
        }

        private void BindSubIndusrtyCodes()
        {
            if (CurrentRowIndusrtylist.SelectedItem != null)
            {
                var unitIndusrtyItem = CurrentRowIndusrtylist.SelectedItem as System_IndustryCodes;
                _db.Load(_db.GetIndustryCodesQuery(), op =>
                {
                    CurrentRowIndusrtySublist.Items.Clear();
                    CurrentRowIndusrtySublist.Items.Add(new System_IndustryCodes { ID = -1, IndustryCodes = "--请选择子行业--" });
                    IEnumerable<System_IndustryCodes> tempsubList = op.Entities.Where(q => q.ParentCodeID == unitIndusrtyItem.ID);
                    foreach (var temp in tempsubList)
                    {
                        if (temp == null)
                            return;
                        CurrentRowIndusrtySublist.Items.Add(new System_IndustryCodes { ID = temp.ID, IndustryCodes = temp.IndustryCodes });
                    }
                    CurrentRowIndusrtySublist.DisplayMemberPath = "IndustryCodes";
                    CurrentRowIndusrtySublist.SelectedValuePath = "ID";
                    CurrentRowIndusrtySublist.UpdateLayout();
                    if (CurrentRowIndusrtySublist.Items.Count == 1)
                        CurrentRowIndusrtySublist.SelectedIndex = 0;
                    else
                        CurrentRowIndusrtySublist.SelectedIndex = 1;
                    //if (_OldSubindustryId != 0)
                        //CurrentRowIndusrtySublist.SelectedItem = (from q in CurrentRowIndusrtySublist.Items where (q as System_IndustryCodes).ID == _OldSubindustryId select q).FirstOrDefault();//默认选择项-子行业
                }, null);
            }
        }

最终效果:

时间: 2024-10-14 05:05:36

【原创】有关Silverlight中“DataGrid中级联动态绑定父/子ComboBox ”的示例。的相关文章

【原创】有关Silverlight中“DataGrid中单元格动态绑定ComboBox单击时数据项莫名被清除 ”的解决方案及思路。

今天上班遇到一个很古怪的问题,搞了半天愣是没找到原因.是这样的,在Datagrid中有绑定一个ComboBox列,其不包含在 model数据中,而是单独在LoadingRow事件中去 从数据库拿数据绑定. 绑定成功以后,但在对 单元格进行编辑时(也就是点击ComboBox),瞬间ComboBox内内容都被莫名清空了. 查看了前台绑定的datagrid事件,并没有太多事件里 对ComboBox进行了清空操作,于是找到了一个最有嫌疑的 事件"CurrentCellChanged", 代码如

esayUi中datagrid中json串为空时,显示上一次数据的解决方法

function initSearchProject(startDate,finishDate,flag) {        $("#finishDate").val(finishDate);    $("#startDate").val(startDate);    var reflag=$('#reflag').val(flag);    $('#dg').datagrid({        queryParams : {        'startDate':

jquery中datagrid中getSelected和getSelections的应用

http://blog.sina.com.cn/s/blog_8e50ede90101fff9.html 刚开始使用jquery的datagrid就知道如果要对特定的一行进行编辑,可以是 $('#onpro').datagrid('getSelected');,例如要查看跟这一行相关的信息并且在新开的一个页面进行查看的代码如下: 但是当我要对多个选中的数据进行操作,我以为用getSelected仍然有用,所以错误的代码如下: 但是firebug报item is null的错啊? 然后就上网查ge

(转)flex中DataGrid中itemRenderer的button的click调用方法问题

原网址:http://www.ylzx8.cn/duomeiti/flex/504893.html button放在DataGrid的itemRenderer里面,为什么调用方法,提示不存在 XML code <mx:DataGrid id="dgSelUser" width="100%" height="50%" dataProvider="{flowPeoples}"> <mx:columns> &

修改easyui中datagrid中特定行的内容

$('#tbmain').datagrid('beginEdit', index);//先把行号为index的行状态设为开始编辑 $('#tbmain').datagrid('getRows')[index]['zzrq'] = returnValue.zzrq; $('#tbmain').datagrid('getRows')[index]['nyglb'] = returnValue.nyglb; $('#tbmain').datagrid('getRows')[index]['ngzjb'

jeecg中datagrid中获取选定行的字段值

datagrid代码如下: <t:datagrid name="orderMainList" checkbox="true" pagination="true" fitColumns="false" title="信息" actionUrl="orderMainController.do?datagrid" idField="id" fit="true

在EasyUI的DataGrid中嵌入Combobox

在做项目时,需要在EasyUI的DataGrid中嵌入Combobox,花了好几天功夫,在大家的帮助下,终于看到了它的庐山真面: 核心代码如下: <html> <head> @*添加Jquery EasyUI的样式*@ <link href="@Url.Content("../../Content/JqueryEasyUI/themes/default/easyui.css")" rel="stylesheet" /

Silverlight 应用程序中未处理的错误

Silverlight 开发中遇到个错误: SCRIPT5022: Silverlight 应用程序中未处理的错误 代码: 2108 类别: InitializeError 消息: 无法下载初始屏幕或白屏问题 查询了很多材料也没有找到办法,最后下载了 Fildder4(HttpWatch Basic),通过跟踪资源请求,发现缺失了几个文件引起. 几次遇到类似的问题,大部分不是文件.资源缺失,就是JS错误引起的问题. 版权声明:本文为博主原创文章,未经博主允许不得转载.

获取SilverLight.Web项目中路径Uri

方法一: //获取指定要呈现的xaml内容的包活xaml文件Uri var strFullUrl = Application.Current.Host.Source.AbsoluteUri; if (strFullUrl.IndexOf("ClientBin") > 0) { var uristr = strFullUrl.Substring(0, strFullUrl.IndexOf("ClientBin")) + "Report/Default.