ASP.NET复合控件
<body> <form id="form1" runat="server"> <div> <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" AutoPostBack="true"></asp:DropDownList> <%--下拉框--%> <%-- AppendDataBoundItems="True" 将数据绑定项追加到静态声明的列表项上,就是加上“===请选择===”这个东西需要改属性--%> <%-- AutoPostBack意思是自动回传,也就是说此控件值更改后是否和服务器进行交互比如Dropdownlist控件,若设置为True,则你更换下拉列表值时会刷新页面(如果是网页的话),设置为flase就不会刷新了(也就是false时不和服务器交互)--%> <asp:ListBox ID="ListBox1" runat="server"> </asp:ListBox> <select multiple="multiple"> <option>111</option> <option>222</option> <option>333</option> <option>444</option> <option>555</option> <option>666</option> <option>777</option> </select> <asp:Button ID="Button1" runat="server" Text="Button" /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </div> </form> </body>
protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; DropDownList1.SelectedIndexChanged += DropDownList1_SelectedIndexChanged; // 属性里面设置了AutoPostBack="true",当选择选项时候就触发事件,
然后label1就等于你选择的那个选项的值,下面在事件里写赋值; if(!IsPostBack) { ListItem li = new ListItem("===请选择===",""); //""里面随便写,如果不选择 就直接请选择 点击按钮会出现你“”里面写的东西 DropDownList1.Items.Add(li); //加一个请选择要想让他在页面显示,要把DropDownList1的属性里面的AppendDataBoundItems的属性改为True; DropDownList1.DataSource = new UsersData().SelectAll(); DropDownList1.DataTextField = "nickname"; DropDownList1.DataValueField = "ucode"; DropDownList1.DataBind(); ListBox1.Items.Add(li); //加一个请选择要想让他在页面显示,要把DropDownList1的属性里面的AppendDataBoundItems的属性改为True; ListBox1.DataSource = new UsersData().SelectAll(); ListBox1.DataTextField = "nickname"; ListBox1.DataValueField = "ucode"; ListBox1.DataBind(); } } void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { Label1.Text = DropDownList1.SelectedItem.Text; } void Button1_Click(object sender, EventArgs e) { if(DropDownList1.SelectedItem.Value != "-1") { Label1.Text = DropDownList1.SelectedValue; } }
<body>
<form id="form1" runat="server">
<div>
<%-- <asp:CheckBox ID="CheckBox1" runat="server" Text="哈哈" />--%>
<asp:CheckBoxList ID="CheckBoxList1" runat="server" RepeatDirection="Horizontal">
<%-- RepeatColumns="3" 每行显示三列--%> <%--RepeatDirection="Horizontal"水平布局,还有垂直布局,到时候自己从设计里属性里看--%>
</asp:CheckBoxList>
<%--就这一句话 在网页打开后什么都不显示,在设计里面,有一个未选定的,右键,编辑项,添加text和value--%>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
protected void Page_Load(object sender, EventArgs e)
{
Button1.Click += Button1_Click;
if (IsPostBack==false)
{
//赋值,无默认选中项的;
CheckBoxList1.DataSource = new UsersData().SelectAll();
CheckBoxList1.DataTextField = "nickname"; //DataTextField获取或设置为列表项提供文本内容的数据源字段
CheckBoxList1.DataValueField = "ucode"; //DataValueField获取或设置为列表项提供文本内容的数据源字段 如果不写这两句话 他只会为你提供一个Users 不会给你提供名字,这里就是为了给你提供名字(显示的名字)
CheckBoxList1.DataBind();
//赋值有默认选中项的 需要遍历
//List<Users> ulist = new UsersData().SelectAll();
//foreach (users u in ulist)
//{
// listitem li = new listitem(u.nickname, u.username);
// if (u.username == "xiaoyueyue" || u.username == "liuyubin")
// li.selected = true; //获取或设置一个值,该值指示是否选定此项,表名已经选定这几项
// checkboxlist1.items.add(li);
//}
}
}
void Button1_Click(object sender, EventArgs e)
{
//if (CheckBox1.Checked)
// Label1.Text = CheckBox1.Text;
// 取值
if (CheckBoxList1.SelectedItem != null) // if (CheckBoxList1.SelectedIndex != -1) 不能为空,要不会报错
{
//取一个值,如果选择多个会取第一个,SelectedItem索引最小的那个
// Label1.Text = CheckBoxList1.SelectedItem.Text; //获取选中最小的值,还有.value
//取多个值,遍历
string s = "";
foreach (ListItem li in CheckBoxList1.Items) //遍历 每一个都是ListItem对象,
{
if (li.Selected) //Selected,获取或设置一个值,该值指示是否选定此项
{
s += li.Value + ","; //加等于 后面的text也可以换成value就成用户的编号;
//s += li.Text + ",";
}
}
Label1.Text = s;
}
}