1. 程式人生 > >2017-5-19 復合控件 ispostback 跨頁面傳值

2017-5-19 復合控件 ispostback 跨頁面傳值

str 數組 layout class bsp 提交 接收 改變 each

(一)復合控件

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;//給數據庫看的內容 }

加載的時候默認選中的按鈕:

技術分享 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>");

2017-5-19 復合控件 ispostback 跨頁面傳值