/// <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); }
/// <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)); }
/// <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); }
/// <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); }
/// <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()); }
/// <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); } }
/// <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)); }