blog.Toby

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks

          DataGrid的事件中,ItemCreated和ItemDataBound是尤為重要并且經(jīng)常要用到的兩個,其中的ItemCreated事件在DataGrid創(chuàng)建表格行時觸發(fā),而ItemDataBound則在數(shù)據(jù)綁定被綁定到相應(yīng)的行后觸發(fā),前者可以用來在DataGrid中創(chuàng)建動態(tài)控件,比如下面的例子中在DataGrid的標(biāo)題行中加入一個Button并注冊它的Click事件,而ItemDataBound被觸發(fā)時,數(shù)據(jù)已經(jīng)綁定到相應(yīng)的行,這時就可以獲取當(dāng)前行的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)來執(zhí)行相應(yīng)的操作,比如下面的示例中把綁定到“性別”字段的book值用string替換、為“禁止登錄”列的CheckBox設(shè)置選中狀態(tài)等,示例代碼如下,保存為aspx文件后放在虛擬目錄下即可運行:

          <%@ Page Language="C#" Debug="True"%>
          <%@ Import Namespace="System" %>
          <%@ Import Namespace="System.Data" %>

          <script language="C#" runat="server">

           void Page_Load(Object src, EventArgs e)
           {
           if(!Page.IsPostBack){
           DataTable table=new DataTable();
           table.Columns.Add(new DataColumn("編號",typeof(int)));
           table.Columns.Add(new DataColumn("姓名",typeof(string)));
           //性別列,用bool值表示,男為true,女為false
           table.Columns.Add(new DataColumn("性別",typeof(bool)));
           table.Columns.Add(new DataColumn("禁止登錄",typeof(bool)));
           DataRow row;
           Random rd=new Random();
           for(int i=0;i<10;i++){
           row=table.NewRow();
           row[0]=i+1;
           row[1]="用戶"+(i+1).ToString();
           row[2]=(rd.Next(0,80)%2==0); //用隨機數(shù)來生成性別,以示公正原則:)
           row[3]=(i%2==0);
           table.Rows.Add(row);
           }
           MyDataGrid.DataSource=table;
           MyDataGrid.DataBind();
           }
           }

          void MyDataGrid_ItemCreated(object src,DataGridItemEventArgs e){
          if(e.Item.ItemType==ListItemType.Header){
          Button btn=new Button();
          btn.Text=e.Item.Cells[3].Text;
          btn.Click+=new EventHandler(btn_Click);
          e.Item.Cells[3].Controls.Clear();
          e.Item.Cells[3].Controls.Add(btn);
          }
          }

          void MyDataGrid_ItemDataBound(object src,DataGridItemEventArgs e){
          if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem){
          DataRowView rv=(DataRowView)e.Item.DataItem;
          //把性別列的bool值替換為相應(yīng)的文字“男”或“女”
          if((bool)rv["性別"]==true)
          e.Item.Cells[2].Text="男";
          else
          e.Item.Cells[2].Text="女";
          //根據(jù)“禁止登錄”列的值設(shè)置CheckBox的選中狀態(tài)
          CheckBox ckb=e.Item.FindControl("ckb_denyLogin") as CheckBox;
          if(ckb!=null){
          ckb.Checked=(bool)rv["禁止登錄"];
          }
          }
          }

          void btn_Click(object src,EventArgs e){
          string deniedUsers=""; //保存用戶選中的“禁止登錄”的用戶編號
          CheckBox ckb;
          for(int i=0;i<MyDataGrid.Items.Count;i++){
          if(MyDataGrid.Items[i].ItemType==ListItemType.Item||MyDataGrid.Items[i].ItemType==ListItemType.AlternatingItem){
          ckb=(CheckBox)MyDataGrid.Items[i].FindControl("ckb_denyLogin");
          if(ckb!=null&&ckb.Checked){
          deniedUsers+=MyDataGrid.DataKeys[i].ToString()+",";
          }
          }
          }
          deniedUsers=deniedUsers.Trim(',');
          msglbl.Text="已被禁止登錄的用戶:"+deniedUsers;
          }
          </script>
          <html>
          <head>
          <title> Webdiyer制造:)</title>
          <META NAME="Generator" CONTENT="EditPlus">
          <META NAME="Author" CONTENT="Webdiyer(http://www.webdiyer.com)">
          </head>
          <body>

          <form runat="server">
                <ASP:DataGrid id="MyDataGrid" width="500px" runat="server" OnItemCreated="MyDataGrid_ItemCreated" OnItemDataBound="MyDataGrid_ItemDataBound" DataKeyField="編號" AutoGenerateColumns=false>
                <HeaderStyle HorizontalAlign="center" BackColor="#9999CC"/>
                <Columns>
                <asp:BoundColumn DataField="編號" HeaderText="編號"/>
                <asp:BoundColumn DataField="姓名" HeaderText="姓名"/>
                <asp:BoundColumn DataField="性別" HeaderText="性別"/>
                <asp:TemplateColumn HeaderText="禁止登錄">
                <ItemStyle HorizontalAlign="center"/>
                <ItemTemplate>
                <asp:CheckBox runat="server" id="ckb_denyLogin"/>
                </ItemTemplate>
                </asp:TemplateColumn>
                </Columns>
                </asp:DataGrid>
          <asp:Label runat="server" id="msglbl"/>
          </form>
           
          </body>
          </html>



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=225218

          posted on 2007-05-18 23:30 渠上月 閱讀(1899) 評論(0)  編輯  收藏 所屬分類: other tips
          主站蜘蛛池模板: 洮南市| 登封市| 桃源县| 敦煌市| 家居| 中江县| 涟水县| 保山市| 类乌齐县| 克什克腾旗| 固始县| 芷江| 九江市| 洛阳市| 太谷县| 民乐县| 永嘉县| 壶关县| 宾阳县| 太湖县| 宜兰县| 玉山县| 丰台区| 新野县| 边坝县| 天祝| 天镇县| 公主岭市| 田林县| 安龙县| 潼关县| 巴中市| 洛川县| 五家渠市| 灵石县| 富蕴县| 河池市| 宜城市| 锡林郭勒盟| 公主岭市| 耿马|