• 总结一下DataGrid,DataList,Repeater


    一.数据访问控件的区别
    1.功能从弱到强依次为Repeater->DataList->DataGrid
    2.功能明细
    <!--...............Repeater:....................................................................->
     能够绑定显示基本的数据,方便使用,灵活,自主选择性大
     有5种模板: ItemTemplate,HeaderTemplate,FooterTemplate,SeparatorTemplate,AlternatingItemTemplate


    <!--...............DataList:.....................................................................->
     除了Repeater的功能之外,还有编辑,查询的功能
     SelectedItemTemplate,EditItemTemplate


     (当一次只显示主题信息,然后点击详细信息时再显示SelectedItemTemplate里的内容,ItemTemplate里要设置 LinkButton,CommandName="select",DataList属性里设置事件响应OnItemCommand="DataList_ItemCommand")
     eg:
     public void DataList_ItemCommand(Object sender,DataListCommandEventArgs e)
     {
     score.SelectedIndex=e.Item.ItemIndex;
     ListBind();
     }


     (当要编辑的时候,项模板也要设置,只是CommandName="edit",再显示EditItemTemplate里的内容,里面有两个 LinkButton,CommandName="edit",CommandName="cancel")
     eg:
    <asp:DataList id="score" runat="server" RepeatLayout="Table" OnEditCommand="DataList_EditCommand"
    OnUpdateCommand="DataList_UpdateCommand"
    OnCancelCommand="DataList_CancelCommand"
    >
    <HeaderTemplate>演示DataList控件的编辑功能</HeaderTemplate>
     
     <ItemTemplate>
     姓名:<%# DataBinder.Eval(Container.DataItem,"Name")%>
     <asp:LinkButton id="btnselect" Text="编辑" CommandName="edit" runat="server"/>
     </ItemTemplate>

     <EditItemTemplate>
     姓名:<asp:Label id="lbName" Text='<%# DataBinder.Eval (Container.DataItem,"Name")%>'   runat="server"/><br>
     语文成绩:<asp:TestBox id="tbChinese" Text='<% DataBinder.Eval  (Container.DataItem,"Chinese")%>' runat="server"/><br>
     数学成绩:<asp:TestBox id="tbMath" Text='<% DataBinder.Eval    (Container.DataItem,"Math")%>' runat="server"/><br>
     <asp:LinkButton id="lbnUpdate" Text="更新" CommandName="update" runat="server"/>
     <asp:LinkButton id="lbnCancel" Text="取消" CommandName="cancel" ruant="server"/>
     </EditItemTemplate>

    </asp:DataList>

     eg:
     public void DataList_EditCommand(Object sender,DataListCommandEventArgs e)
    {
     score.EditItemIndex=(int)e.Item.ItemIndex;
     ListBind();
    }
     public void DataList_CancelCommand(Object sender,DataListCommandEventArgs e)
    {
     score.EditItemIndex=-1;(默认为-1时为初始状态)
     ListBind();
    }
    public void DataList_UpdateCommand(Object sender,DataListCommandEventArgs e)
    {
     int intChinese=Int32.Parse(((TextBox)e.Item.FindControl("tbChinese")).Text);
     ..........................
     ..........................
     string strUpdate="update Score set Chinese='"+intChinese+"',...,...,
     执行修改更新即可
     
     score.EditItemIndex=-1;
     ListBind();
    }


     DataList属性里有RepeatLayout默认为Table,也可以设置为Flow则和Repeater一样
     DataList属性里有RepeatDirection和RepeatColumns可以在不严格定义表格的情况下显示布局

    <!--....................DataGrid......................................................................->
    有BoundColumn,HyperLinkColumn,ButtonColumn(事件为OnItemCommand,ButtonType属性可设置为pushButton成为标准Button按钮),EditCommandColumn,TemplateColumn(下面有ItemTemplate,HeaderTemplate,FooterTemplate等等)
    有分页,排序,编辑,查询功能等
    EditCommandColumn属性里设置EditText,CancelText,UpdateText,ButtonType等属性,
    然后绑定列,DataGrid里设置响应事件OnEditCommand,OnCancelCommand,OnUpdateCommand,编写事件响应函数代码
    (Object sender,DataGridCommandEventArgs e)

    分页功能:
    DataGrid属性里设置id="",AllowPaging="true" OnPageIndexChanged事件响应,PageSize=""(每页记录数),PagerStyle-NextPageText="",PagerStyle-PrevPageText="",PagerStyle-HorizontalAlign="",PageStyle-Mode="NumericPages"(显示123数字),AllowCustomPaging="true"
    public void PageChanged(Object sender,DataGridPageChangedEventArgs e)
    {
     usrGrid.CurrentPageIndex=e.NewPageIndex;
     BindGrid();
    }
    ICollection CreateTable()
    {
     .....................
     .....................
     return ds.Tables["Score"].DefaultView;
    }
    public void BindGrid()
    {
     DataView dv=(DataView)CreateTable();
     usrGrid.VirtualItemCount=dv.Count;(系统利用VirtualItemCount属性和PageSize的值来分页)
     usrGrid.DataSource=dv;
     usrGrid.DataBind();
    }/////*******利用了视图的(dv.Count)Count属性
    排序功能:
    DataGrid属性里设置AllowSorting="true',OnSortCommand响应事件函数
    eg:
    public void DataGrid_Sort(Object sender,DataGridSortCommandEventArgs e)
    {
     ViewState["SortField"]=(string)e.SortExpression;
     BindGrid();
    }
    public void BindGrid()
    {
     DataView dv=(DataView)CreateTable();
     dv.Sort=(string)ViewState["SortField"];
     score.DataSource=dv;
     score.DataBind();
    }//////*******利用了视图的(dv.Sort)Sort属性
    注:绑定列中必须设置SortExpression属性

    删除功能:
    可以通过e.Item.ItemIndex获得索引项,然后新建一行,DataRow dr=ds.Tables[tablename].Rows[(int)e.Item.ItemIndex]
    dr.Delete();
    adr.Update(ds,tablename);
    但这样会有一个不好处,就是如果有DataGrid排序功能,则不能根据索引来删除,可以绑定一个id,然后根据e.Item.Cell[0].Controls[0],获得 id,然后据id删除,或者e.Item.FindControl["id"];
    得到id号

    编辑功能:
    和DataList一样,略.........................

     

     

  • 相关阅读:
    Windows消息大全
    IIS配置wap服务器
    pocket pc 2003网络配置
    真正彻底的删除硬盘数据
    js日期正则表达式
    在安装flash player 10时遇到提示“正尝试安装的adobe flash player不是最新版本”的解决方法
    VB HOOK(钩子)超级无敌详细用法
    利用VB远线程注入技术实现键盘拦截的例子(无DLL)
    C#颜色和名称对照表
    删除“拒绝访问”等无法删除的文件
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/843469.html
Copyright © 2020-2023  润新知