2017-5-19 复合控件 ispostback 跨页面传值
(一)复合控件
1.RadioButtonList 每一行数据都是一个ListItem
属性:RepeatDirection --- 排列方式
RepeatColumns --- 每一行中需要展示的个数
RepeatLayout --- 页面中生成什么样的代码
Enable --- 是否启用
selected --- 是否被选中
Text --- 显示的内容 Value --- 给系统看的
赋值:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
List<Nation> ulist = new NationData().select();
foreach(Nation uu in ulist)
{
ListItem li = new ListItem(uu.NationName, uu.NationCode);
RadioButtonList1.Items.Add(li);
}
}
Button1.Click += Button1_Click;
}
取值:(页面上有一个按钮,点击按钮在lable中显示选中的内容)
void Button1_Click(object sender, EventArgs e)
{
Label1.Text= RadioButtonList1.SelectedItem.Text//显示的内容
+RadioButtonList1.SelectedItem.Value;//给数据库看的内容
}
加载的时候默认选中的按钮:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
2.CheckBoxList 多选按钮
多选取值:
void Button1_Click(object sender, EventArgs e)
{
string a = "";
foreach(ListItem li in CheckBoxList1.Items)
{
if (li.Selected)
{
a += li.Text;
}
}
Label1.Text = a;
}
赋值和RadioButtonList一样,都是遍历数组,还可以用数据源进行绑定
数据源绑定数据:
CheckBoxList1.DataSource = ulist;
CheckBoxList1.DataTextField = "NationName";
CheckBoxList1.DataValueField = "NationCode";
CheckBoxList1.DataBind();
点击复选框的时候,lable显示点击的内容:在checkbox中写事件SelectedIndexChange,一定要加入自动提交属性AutoPostBback="true";
//改变事件代码:
if (CheckBoxList1.SelectedIndex >= 0)
Label1.Text = CheckBoxList1.SelectedItem.Text;
else
Label1.Text = "";
//checkbox中的代码
<asp:CheckBoxList AutoPostBack="true" ID="CheckBoxList1" runat="server" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"></asp:CheckBoxList>
3.DropDownList 下拉列表
赋值:和复合控件checkboxlist,radiobuttonlist一样
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
List<Nation> ulist = new NationData().select();
CheckBoxList1.DataSource = ulist;
CheckBoxList1.DataTextField = "NationName";
CheckBoxList1.DataValueField = "NationCode";
CheckBoxList1.DataBind();
ListItem la = new ListItem("==请选择==","-1");
DropDownList1.Items.Add(la);
foreach (Nation uu in ulist)
{
ListItem li = new ListItem(uu.NationName, uu.NationCode);
DropDownList1.Items.Add(li);
}
}
Button1.Click += Button1_Click;
}
取值:
void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DropDownList1.SelectedItem.Text;
}
4.ListBox 列表控件
属性:selectionmode设置是否多选,multiple多选,single单选
取值,赋值和控件checkboxlist,radiobuttonlist,dropdownlist一样
(二)ispostback
绑定数据出现数据选项无法更改
page_load事件再每一次页面刷新的时候都会执行
就会把数据重新绑定一次,再去执行按钮事件
判断页面是否是第一次加载还是响应回发
if(!ispostback)
{
只需要在页面第一次加载的时候才执行的代码写到这里面
注意95%的代码都要写到这里面
!事件委托不能写到这里面
}
(三)跨页面传值
1.页面跳转:在本窗口中
Response.Redirect("文件路径");
2.页面传值:传递的值可以是很多个,不固定的
用的是QueryString --- url传值,或者地址栏传值
接在那个网址后面,就给哪个传值,
样式:地址?key=value&key=value,key就相当于是一个变量,名称,用来存贮的
接收:string value = Request["key"];
例子:
Response.Redirect("aaa.aspa?a="+TextBox1.Text);
aaa页面中的接收,并且在label中显示:string aa = Request["a"]; label1.text=aa;
3.打开新页面窗口:
Response.Write("<script>window.open('Default2.aspx','_blank');</script>");