[ASP.NET笔记] 7.GridView

GridView, Repeater与DataList数据服务控件
                               1:GridView控件基本属性
                               2:让GridView有分页功能
                               3:GridView数据控件的七种字段类型
                               4:让GridView具有光棒效果
                               5:为GridView添加自动编号
                               6:把DataGrid的数据,导出到excel中
                               7:隐藏GridView的某一列
                               8:如何自定义分页栏
                               

                  

                        GridView控件基本属性

                       功能:数据显示控件
                         1)如何让GridView显示数据库的表
       GridView1.DataSource=数据源
                            GridView1.DataBind();
                         2)EmptyDataText,EmptyDataRowStyle:没有任何数据时显示的文本,样式
                         3)GridLine:设置显示的网络线
                         4)ShowHead,ShowFooter:显示页头与页脚
                         5)AllowSorting:显示允许排序
                         6)AutoGenerateDeleteButton:是否自动产生删除按钮
                         7)AutoGenerateEditButton:是否自动产生编辑按钮
                         8)AutoGenerateSelButton:是否自动产生选择按钮
                         9)DataKeyNames:设置GridView主键的值
                        10)DataKeys:在设置了DataKeyNames之后,得到当前行主键的值
                             DataKeys[下标].value.tostring
                        11)Rows:得到gridview中行集合
                            A)GridView1.Rows[2].Cells[3].Text:得到第3行第4个单元格的值
                            B)Rows.Count:得到行的个数
                        12)AlternatingRowStyle:交替行的样式
                        13)FooterStyle:页脚样式
                        14)HeadStyle:头新式
                        15)AllowPaging:是否充许分页
                        16)PageSize:每一页的数据大小
                        17)PageIndex:当前行的下标
                        18)PageStyle:分页栏样式
                        19)RowStyle:数据行的样式
                        20):Width,Height:gridView的高和宽。一般要去掉,这样有利于排版

                    让GridView有分页功能 (分页数据源不能是sqldataread)        
                             A)设置AllowPaging为true
                             B)设置PageSize大小
                             C)设置PageSetting的分页项
                               PageSettings:用来设置分页的项
                              1)Mode:设置分页导航条中分页的样式:
                                     11)NextPrevious:上一页按钮和下一页按钮。
                                     22)NextPreviousFirstLast:上一页按钮、下一页按钮、第一页按钮和最后一页按钮。
                                     33)Numeric:可直接访问页面的带编号的链接按钮。
                                     44)NumericFirstLast:带编号的链接按钮、第一个链接按钮和最后一个链接按钮
                                 2)FirstPageText:第一页按钮的文字。
                                 3)PreviousPageText:上一页按钮的文字。
                                 4)NextPageText:下一页按钮的文字。
                                 5)LastPageText:最后一页按钮的文字
                                6)PageButtonCount:当用户在mode里面选择Numeric时,所一页所显示的按钮个数
                                7)Position:用来设置分页文字的显示位置
                                8)PageImageUrl:用来设置一个图片来代替分页链接按钮
                             D)在PageIndexChanging里面写上代码
                                   this.GridView1.PageIndex = e.NewPageIndex;
                                   this.GridView1.DataSource =数据源
                                   this.GridView1.DataBind();//执行数据绑字代码
                             E)让用户实现转到功能:
                                   直接指定this.GridView1.PageIndex=转到的值
                                   然后进行数据的绑定
                             F)打开EnableSortingAndPagingCallBacks属性:
                                  该属性可以实现AjAx。异步更新

                     GridView数据控件的七种字段类型
                             1)数据绑定字段:BoundField。[手动绑定]
                                      1:AutoGenerateColumns:自动产生列,会自动根据数据源去创建列,但是有时候
                                        用户可能只需要其中的几列,这时应该取消该属性,并手动添加列
                                      2:DataField:用于绑定的列名
                                      3:HeadText:用于显示的新的列名
                                      4:NullDisplayText:空字段所显示的文本
                                      5:DataFormatString:字符串格式化功能
                                        此时一定要把HtmlEncode设为false生效
                                         {0:C}:显示货币类型
                                         {0:F}:显示固定小数点。{0:F2}显示两位小数
                                         {0:D}:显示为长日期格式                                             
                                    作用:
                                       A)修改字段标题
                                       B)格式化字符串

                                   2)ButtonField:按钮字段
                                     在GridView控件中显示自定义的按钮
                                       1:Text:显示在按钮上方的标题
                                       2)Type:按钮的样式。
                                       3)ImageUrl:按钮类型设置成图像时,所指定图像
                                       4)CommandName:用来设置按钮的命令名,以后好区别
                                         是点击了那个按钮
                                       4)单击按钮时,会触发RowCommand事件
                                           e.CommandArgument得到当前行的下标
                                           e.CommandName:得到单击按钮的命令名
                                      举例:
                                        1)有订单表,要求在gridview中添加一个按钮名为
                                          修改,执行打印两个按钮
                                        2)有一个商品表,放置一个按钮为放入购物蓝,和退回的按钮
                                          购物车暂时用ListBox来代替                                       

                       如何向GridView中添加客户端的JS  
                                      在一个RowDataBound事件里面写上代码:[是GridView绑定数据时,触发]
                                         if (e.Row.RowType == DataControlRowType.DataRow)
                                           {
                                             (e.Row.Cells[4].Controls[0] as LinkButton).Attributes.Add("onclick", "return confirm('确实要删除吗?');");
                                              其中e.Row代表每一个绑定的行
                                          }

                                     3)CommandFile命令按钮字段
                                       是显示预先定义好的按钮来进行select,edit,update,delete
                                       命令按钮本身就可以执行一些命令,而ButtonField的代码完全由
                                       用户自己写,所以CommandFile可以省很多代码
                                      1)有删除,选择,编辑三个已经做好的按钮
                                      2)如何删除数据                                   
                                         在RowDeleting事件里面写代码
                                         其中e.RowIndex得到删除的当前行的下标                                        
                                         如果要添加删除提示,请为GridView添加客户端脚本
                                         删除完毕之后,请重新绑定GridView到数据源
                                          if (this.GridView1.PageIndex != 0 && this.GridView1.Rows.Count == 1)
                                                 {
                                                    this.GridView1.PageIndex -= 1;
                                                 }
                                             与分页配合一起删除

                                      3)如何编辑数据:[一般不用]
                                             A:在RowEditing事件里面写上:[当用户单击了编辑按钮时]
                                                   this.GridView1.EditIndex = e.NewEditIndex;
                                                   GridDataBind();   //使GridView再次绑定
                                             B:在RowCancelingEdit事件写上:[当用户单击了取消按钮时]
                                                   this.GridView1.EditIndex = -1;
                                                   GridDataBind();
                                             C:在RowUpdating里面得到用户修改的新值
                                                  this.GridView1.Rows[e.RowIndex].Cells[下标].Controls[0] as TextBox
                                                  进行数据库操作
                                                  重新绑定
                                      4)如何选择数据:
                                           A:在SelectedIndexChanging里面写代码
                                             this.GridView1.Rows[e.NewSelectedIndex].Cells[1].Text
                                             得到用户所选中的行的字段的值
                                        举例:
                                           1:一个订单表。要求选择一个订单表的一条记录,
                                               同时显示中订单明细表的内容
                                     
                                   4)CheckBoxField复选框字段
                                      当把数据类型设为Bit类型时,会自动成为复选框

                                5)HyperLinkField超级链接 (用得比较多)
                       1:HeadText:列头文本
                                    2:DataNavigateUrlFields:用来生成Url查询字符串的字段名
                                    3)DataNavigateUrlFormatString:指定Url查询字符串
                                    4)DataTextFiled:用来显示超链接的字段,用来匹配DataTextFormatString
                                    4)DataTextFormatString:显示超链接的文本。比如:
                                              查看{0}的详细资料
                                    举例:
                                        1:一个订单表。要求选择一个订单表的一条记录,
                                               同时显示中订单明细表的内容

                                 6)ImageField:图像字段   
                                           1:HeadText:列头文本
                                           2:DataImageUrlField:用于显示图片的字段
                                7)TemplateFile:模板字段 (很灵活)
                                   当GridView所预定的几种字段都无法满足你的需求时,就可以使用
                                   模板字段。模板字段充许你加入各种你所需要的控件
                                 举例:
                                  1:在每一行的前面加上checkBox,以实现购物
                                     foreach (GridViewRow  gvr  in this.GridView1.Rows)
                                      {
                                        if ((gvr.Cells[0].FindControl("chk") as CheckBox).Checked)
                                       {
                                            s += gvr.Cells[1].Text;
                                       }           
                                     }
                                  2:把某一个字段,作为文本框类型并显示
                                    1)加一个模板列,在模板列中加入文本框
                                    2)在RowDataBound事件里面向该文本框赋值
                                   

                        让GridView具有光棒效果
                                 if (e.Row.RowType == DataControlRowType.DataRow)
                                   {
                                      e.Row.Attributes.Add("onmouseover", "color=this.style.backgroundColor;this.style.backgroundColor='#EBEBEB'");
                                      e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=color");        
                                   }                                                                                                                 

                          

                                  为GridView添加自动编号

                                       1)添加一个绑定列
                                       2)在RowDataBound事件里面写上
                                         e.Row.Cells[0].Text = Convert.ToString(this.GridView1.PageIndex *this.GridView1.PageSize + e.Row.RowIndex+1);
                                            
                                       隐藏GridView的某一列
                                         在RowDataBound事件里面写上
                                         this.GridView1.Columns[0].Visible = false;

                            如何自定义分页栏
                                       1)单右-->编辑模板-->PageTemplate
                                       2)拖拉一些LinkButton在里面。
                                          首页 上页  下页  末页   第几页/共几页
                                         并区分它们的CommandName值
                                       3)在RowCommand事件中处理这些按钮按下的事件
                                           e.CommandName == "a" 来判断按下了那个按钮
                                       4)在RowDataBound事件里面来访问分页栏中的标签
                                            if (e.Row.RowType == DataControlRowType.Pager)
                                                {
                                                    (e.Row.Cells[0].FindControl("lbld") as Label).Text = this.GridView1.PageIndex.ToString();             
                                                 }        

                                      

                            把DataGrid的数据,导出到excel中

                                        1:在页面的类中添加               
                                               public override void VerifyRenderingInServerForm(Control control)
                                                   {
         
                                                   }
                                       2:写上如下代码:
                                            Response.ContentType = "application/vnd.ms-excel";      
                                            System.IO.StringWriter tw = new System.IO.StringWriter();
                                            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
                                            this.GridView2.RenderControl(hw);//设置你要导出内容的控件,我这里是Repeater
                                            Response.Write(tw.ToString());
                                            Response.End();
                                                    
                                 以前使用GridView都是以表格的形式来显示的,有时候我们需要更自由的
                                 方式来展现数据。

                           使用Repeater[一般很少用]
                                    Repeater为我们准备了很多的模板,但是这些模板只能够以进入源码视,手动来写
                                     1:Template:项目模板,
                                     2:SeparatorTemplate:分隔线模板
                                     3:AlternatingItemTemplate:交替项模板
                                     4:HeaderTemplate:头模板
                                     5:FooterTemplate:模板                                   
                                 通过<%#  DataBinder.Eval(Container.DataItem,"字段名")来得到
                                 绑定到Repeater的数据源字段的值                                
                                     举例:
                                           1:做一个在线购物选择商品模板
                                           2:做一个在线考试的界面
                    
                      如何给Repeater分页                                     
            PagedDataSource pds = new PagedDataSource();
                                        pds.DataSource = DataOper.RunHasResult("select 工号,姓名,部门编号,图片 from 职工").DefaultView;
                                        pds.AllowPaging = true;
                                        pds.PageSize = 3;
                                        pds.CurrentPageIndex = CurrentPage;
                                        this.Repeater1.DataSource = pds;
                                        this.Repeater1.DataBind();

                          DataList控件
                               DataList与Repeat控件的区别
                           DataList也有Repeat的那几个模板,此外还多了一个SelectedItemTemplate模板
                           DataList可以一行显示多笔数据,通过设置RepeatColumns=值
                           DataList直接在设计状态时,就可以进行模板的编辑,不像Repeat要写代码
                           
                             实现选择DataList控件中的条目后显示该条目的详细信息
                              1)增加ItemTemplate项目模板,并添加一个LinkButton,以些能进入SelectedItemTemplate模板
                              2)设计SelectedItemTemplate模板
                              3)在DataList的ItemCommand事件中,写上下列代码
                                 this.DataList1.SelectedIndex = e.Item.ItemIndex;
                                  重新绑定DataList
                               举例:
                                 举例:做一个在线购物选择商品模板,只显示图片和商品名,点击
                                       查看详细资料后,会得到该商品的详细资料
 

posted @ 2009-12-02 22:12  吴庆阳  阅读(1529)  评论(0编辑  收藏  举报