Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ListBox.ListItem.Selected始终返回false_Asp.net_User Controls_Listbox_Devexpress_Listitem - Fatal编程技术网

Asp.net ListBox.ListItem.Selected始终返回false

Asp.net ListBox.ListItem.Selected始终返回false,asp.net,user-controls,listbox,devexpress,listitem,Asp.net,User Controls,Listbox,Devexpress,Listitem,这需要一点时间来解释,但这里是: 1) 我创建了一个带有占位符控件的.aspx页面 2) 我使用该页面从数据库加载“container”UserControl: protected override void OnInit(EventArgs e) { base.OnInit(e); try { Utility.MenuItem menuItem = CurrentMenuHandler.ByCurrentPat

这需要一点时间来解释,但这里是:

1) 我创建了一个带有占位符控件的.aspx页面

2) 我使用该页面从数据库加载“container”UserControl:

 protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        try
        {
            Utility.MenuItem menuItem = CurrentMenuHandler.ByCurrentPath();

            var clientId = CurrentClient.ID;
            var userId = CurrentUser.ID;

            if (menuItem.UserControlPath.Length > 0)
            {
                UserControl control = base.LoadControl(menuItem.UserControlPath, 2, clientId, userId, menuItem.ID);
                plContainerControl.Controls.Add(control);
            }

        }
        catch (Exception ex)
        {
            Response.Write(ex.ToString());
        }
    }
3) 在容器控件中,当gridview进入“编辑”模式时,我使用DevXPress gridview动态加载用户控件

5) 然后,我创建了一个界面,所有回发用户控件都实现了该界面:

 public interface IParameter
    {
        IGridable ClientParameter { get; set; }
    }
6) 下面是该接口的实现:

 #region IParameter Members

        public IGridable ClientParameter
        {
            get
            {
                foreach (ParameterValue parameterValue in GridItem.ParameterValues)
                {
                    parameterValue.isSelected = false;
                    foreach (string selectedValue in lstDimension.GetSelectedValues())
                    {
                        if (parameterValue.ValueName == selectedValue)
                        {
                            parameterValue.isSelected = true;
                        }
                    }
                }

                return GridItem;
            }
            set
            {
                ClientParameter = value;
            }
        }

        #endregion
7) 在container控件中,当我从列表框(或ClientParameter)获取所选值时,这就是我从列表框获取实际所选值时遇到的问题

 foreach (IGridable gridColumnTemplate in gridColumns)
                {

                    var myControl = grid.FindEditFormTemplateControl(gridColumnTemplate.ParamName);

                    if (myControl is IParameter)
                    {
                        var clientControl = (IParameter)myControl;

                        gridColumnTemplate.ParameterValues = clientControl.ClientParameter.ParameterValues;

                        var parameter = parameterListElement.AppendChild(parameterXml.CreateElement("Parameter"));
                        var parameterName = parameterXml.CreateAttribute("ParameterName");
                        parameterName.Value = gridColumnTemplate.ParamName;
                        parameter.Attributes.Append(parameterName);

                        foreach (ParameterValue paramValue in clientControl.ClientParameter.ParameterValues)
                        {
                            if (paramValue.isSelected)
                            {
                                XmlNode value = parameter.AppendChild(parameterXml.CreateElement("pv"));
                                value.InnerXml = paramValue.ValueId;
                            }


                        }


                    }
                }

你能在某处发布一个展示这个问题的示例项目吗?我来看看。我担心,仅使用此代码很难找到问题的原因:(我从项目中删除了所有代码,无法重现此问题。
 #region IParameter Members

        public IGridable ClientParameter
        {
            get
            {
                foreach (ParameterValue parameterValue in GridItem.ParameterValues)
                {
                    parameterValue.isSelected = false;
                    foreach (string selectedValue in lstDimension.GetSelectedValues())
                    {
                        if (parameterValue.ValueName == selectedValue)
                        {
                            parameterValue.isSelected = true;
                        }
                    }
                }

                return GridItem;
            }
            set
            {
                ClientParameter = value;
            }
        }

        #endregion
 foreach (IGridable gridColumnTemplate in gridColumns)
                {

                    var myControl = grid.FindEditFormTemplateControl(gridColumnTemplate.ParamName);

                    if (myControl is IParameter)
                    {
                        var clientControl = (IParameter)myControl;

                        gridColumnTemplate.ParameterValues = clientControl.ClientParameter.ParameterValues;

                        var parameter = parameterListElement.AppendChild(parameterXml.CreateElement("Parameter"));
                        var parameterName = parameterXml.CreateAttribute("ParameterName");
                        parameterName.Value = gridColumnTemplate.ParamName;
                        parameter.Attributes.Append(parameterName);

                        foreach (ParameterValue paramValue in clientControl.ClientParameter.ParameterValues)
                        {
                            if (paramValue.isSelected)
                            {
                                XmlNode value = parameter.AppendChild(parameterXml.CreateElement("pv"));
                                value.InnerXml = paramValue.ValueId;
                            }


                        }


                    }
                }