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;//给数据库看的内容 }

加载的时候默认选中的按钮:

 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);
                if (li.Text == "满族") //默认选中满族的
                {
                    li.Selected = true;
                }
                RadioButtonList1.Items.Add(li);
            }
        }
        Button1.Click += Button1_Click;

    }
View Code

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>");

 

原文地址:https://www.cnblogs.com/qingnianxu/p/6877980.html