예제 #1
0
        /// <summary>
        /// 将客户端提交来的值,应用到对应的输入控件上
        /// </summary>
        /// <param name="group">输入控件</param>
        public static IHtmlGroupControl ApplySubmittedValue(this IHtmlGroupControl group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }

            var values = SubmittedValues(group);

            if (values == null)
            {
                return(group);
            }

            ClearValues(group);

            if (values.Any(v => group.Item(v) == null))
            {
                throw new InvalidOperationException();
            }


            foreach (var value in values)
            {
                if (!TrySetValue(group, value))
                {
                    throw new InvalidOperationException();
                }
            }

            return(group);
        }
예제 #2
0
        /// <summary>
        /// 获取输入组当前所有选中的值
        /// </summary>
        /// <param name="group">输入组</param>
        /// <returns></returns>
        public static IEnumerable <string> CurrentValues(this IHtmlGroupControl group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }

            return(group.Items.Where(item => item.Selected).Select(item => item.Value));
        }
예제 #3
0
        /// <summary>
        /// 清空输入组所有选中的值
        /// </summary>
        /// <param name="group">输入组</param>
        public static void ClearValues(this IHtmlGroupControl group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }

            group.Items.ForAll(item => item.Selected = false);
        }
예제 #4
0
        /// <summary>
        /// 尝试为输入组设置一个值
        /// </summary>
        /// <param name="group">输入组</param>
        /// <param name="value">要设置的值</param>
        /// <returns>是否成功</returns>
        /// <remarks>此方法暂不支持设置多个用逗号分隔的值</remarks>
        public static bool TrySetValue(this IHtmlGroupControl group, string value)
        {
            var item = Item(group, value);

            if (item == null)
            {
                return(false);
            }

            item.Selected = true;
            return(true);
        }
예제 #5
0
        /// <summary>
        /// 通过 value 获取输入组项
        /// </summary>
        /// <param name="group">输入组</param>
        /// <param name="value">要查找输入组项的值</param>
        /// <returns>输入组项,如果没有找到则返回 false</returns>
        public static IHtmlInputGroupItem Item(this IHtmlGroupControl group, string value)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }

            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            return(group.Items.Where(item => item.Value == value).SingleOrDefault());
        }
예제 #6
0
        /// <summary>
        /// 尝试为输入组设置一个值
        /// </summary>
        /// <param name="group">输入组</param>
        /// <param name="value">要设置的值</param>
        /// <returns>是否成功</returns>
        /// <remarks>此方法暂不支持设置多个用逗号分隔的值</remarks>
        public static bool TrySetValue(this IHtmlGroupControl group, string value)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }

            group.ClearValues();

            if (string.IsNullOrEmpty(value))
            {
                return(true);
            }


            bool success = true;

            if (group.AllowMultipleSelections)
            {
                foreach (var v in value.Split(','))
                {
                    var item = Item(group, v);

                    if (item == null)
                    {
                        success = false;
                    }
                    else
                    {
                        item.Selected = true;
                    }
                }

                return(success);
            }
            else
            {
                var item = Item(group, value);

                if (item == null)
                {
                    return(false);
                }

                item.Selected = true;

                return(true);
            }
        }
예제 #7
0
        /// <summary>
        /// 获取指定输入组在客户端设置的值
        /// </summary>
        /// <param name="group">输入组</param>
        /// <returns></returns>
        public static string[] SubmittedValues(this IHtmlGroupControl group)
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }


            var data = group.Form.SubmittedValues;

            if (data == null)
            {
                return(null);
            }

            if (!data.AllKeys.Contains(group.Name))
            {
                return(new string[0]);
            }

            return(data.GetValues(group.Name));
        }