使用CustomValidator自定义验证控件检查是否有对ListBox控件选择

时间:2022-06-01 20:04:27

在前网页前端处,我们放置ListBox控件,在数据提交前,检查用户是否有对此控件进行选择? Insus.NET的方法是使用Javascript与CustomValidator自定义验证控件来检查。 
可以看到最终结果: 
使用CustomValidator自定义验证控件检查是否有对ListBox控件选择 
你也想参此例子,可以参考下面数据与准备方法,写一个对象,它将用来产生十个天干。 
HeavenlyStem.cs 

复制代码代码如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
/// <summary> 
/// Summary description for HeavenlyStem 
/// </summary> 
public class HeavenlyStem 

private int _ID; 
private string _Name; 
public int ID 

get { return _ID; } 
set { _ID = value; } 

public string Name 

get { return _Name; } 
set { _Name = value; } 

public HeavenlyStem() 

// 
// TODO: Add constructor logic here 
// 

public HeavenlyStem(int id, string name) 

this.ID = id; 
this._Name = name; 


产生与用泛型来存储它们: 

复制代码代码如下:


private List<HeavenlyStem> GetHeavenStem() 

List<HeavenlyStem> ListHS = new List<HeavenlyStem>(); 
HeavenlyStem hs = new HeavenlyStem(); 
hs.ID = 1; 
hs.Name = "甲"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 2; 
hs.Name = "乙"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 3; 
hs.Name = "丙"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 4; 
hs.Name = "丁"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 5; 
hs.Name = "戊"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 6; 
hs.Name = "己"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 7; 
hs.Name = "庚"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 8; 
hs.Name = "辛"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 9; 
hs.Name = "壬"; 
ListHS.Add(hs); 
hs = new HeavenlyStem(); 
hs.ID = 10; 
hs.Name = "癸"; 
ListHS.Add(hs); 
return ListHS; 


Html标记: 

复制代码代码如下:


<asp:ListBox ID="ListBoxHeavenlyStem" runat="server" Width="60" Height="160" SelectionMode="Multiple"></asp:ListBox> 
<asp:CustomValidator ID="CustomValidator1" runat="server" Display="None" ErrorMessage="必须选择选项" ClientValidationFunction="ValidateListBox"></asp:CustomValidator> 
<asp:ValidationSummary ID="ValidationSummary1" runat="server" EnableClientScript="true" 
ShowMessageBox="true" ShowSummary="false" /> 
<asp:Button ID="Button1" runat="server" Text="Submit" /> 


接下来,你需要在.aspx.cs为ListBox控件绑定数据,数据源即是刚才产生的List<HeavenlyStem>: 

复制代码代码如下:


using System.Collections.Generic; 
using System.Data; 
using System.Data.OleDb; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Insus.NET; 
public partial class _Default : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 

if (!IsPostBack) 
Data_Binding(); 

private void Data_Binding() 

this.ListBoxHeavenlyStem.DataSource = GetHeavenStem(); 
this.ListBoxHeavenlyStem.DataTextField = "Name"; 
this.ListBoxHeavenlyStem.DataValueField = "ID"; 
this.ListBoxHeavenlyStem.DataBind(); 


最后是写Javascript脚本: 

复制代码代码如下:


function ValidateListBox(sender, args) { 
var lb = document.getElementById("<%=ListBoxHeavenlyStem.ClientID%>") 
var options = lb.options; 
args.IsValid = false; 
for (var i = 0; i < options.length; i++) { 
if (options[i].selected == true) { 
args.IsValid = true; 
return;