书签 分享 收藏 举报 版权申诉 / 15

类型aspnet学习之DataList控件.docx

  • 文档编号:8691798
  • 上传时间:2023-02-01
  • 格式:DOCX
  • 页数:15
  • 大小:700.82KB

                   

                   

                       名称

                   

                   

                       价格

                   

                   

                       产地

                   

                   

                       货架

                   

                   

                       图片

                   

               

           

        

       

           

               

                   

                       <%#Eval("Ids")%>

                   

                   

                       <%#Eval("name")%>

                   

                   

                       <%#Eval("price")%>

                   

                   

                       <%#Eval("source")%>

                   

                   

                       <%#Eval("stack")%>

                   

                   

                       <%#Eval("image")%>

                   

               

           

        

   

DataList>

   由于模板内容是我们复制过来的Table表格,所以在数据绑定的时间系统不知道该把数据源的值显示在哪个td标记里面。

为此我们使用<%#Eval("列名")%>来手动指定DataList如何绑定至数据源。

   这里需要说明的是DataList只支持单向绑定,所以当你使用<%#Bind()%>进行绑定时也只是一种单向绑定的效果,而不像GridView那样双向绑定。

因为DataList使用的是单项绑定,所以它无法像GridView那样自动产生更新与删除的效果,如果想实现更新删除的功能的话则需要我们手动编写代码了。

   (车延禄)

   运行效果:

    

   如果你对这个页面不太满意的话,那你可以打开源页面对其中的Table表格进行样式设置达到满意的效果。

思考:

如何把图片也显示出来?

   思考:

如何把普通项和交替项实现不同的背景色?

    

二、用DataList实现不规则的显示   

  像上个例子,如果我们把图片显示出来的话,那图片会把我们的数据行撑大,这样的界面很不美观,我们可以把界面设置为如下方式:

    

   这种样式的显示其实很简单,只需要把模板列变一下就可以了

    

    然后再在源代码相应位置处用<%#Eval("")%>绑定到数据源中就可以了。

   要想一行显示多个水果的话,请设置RepeatColumns和RepeatDirection两个属性。

        RepeatColumns属性:

设置一行显示几项

       RepeatDirection属性:

设置项的布局方式。

Virtical-竖排优先,Horizontal-以行优先

    

三、用DataList实现更新和删除

   用DataList修改和更新

   第一步:

在普通项模板或交替项模板中加入一个按钮,并把该按钮的CommandName设为edit。

        

   第二步:

编辑EditTemplate,在其中要执行修改的地方加入文本框或其它控件,并加入“更新”和“取消”两个按钮,分别把这两个按钮的CommandName设为update和cancel

    

   第三步:

在EditCommand事件中编写代码,把当前项用编辑模板显示出来

    

   第四步:

在UpdateCommand事件中编写代码把修改完的数据更新回数据库,在CancelCommand事件中编写代码,把当前项变回普通项状态

   运行效果:

    

在DataList中常用的事件:

        ItemCreated:

项创建完成时触发,与GridView中的RowCreated事件相似

        ItemDataBound:

数据绑定完成时触发,与GridView中的RowDataBound事件相似

        CancelCommand:

当CommandName是cancel的按钮被点击时触发该事件

        DeleteCommand:

当CommandName是delete的按钮被点击时触发该事件

        EditCommand:

当CommandName是edit的按钮被点击时触发该事件

        UpdateCommand:

当CommandName是update的按钮被点击时触发该事件

        SelectedIndexChanged:

当CommandName是select的按钮被点击时触发该事件

        ItemCommand:

任何一个按钮被点击时触发该事件,包括CommandName是cancel,delete,edit,update,selected的按钮

四、DataList分页 

  DataList默认不带分页功能,但可以与PagedDataSource对象结合使用进行分页,但对于页数比较多的情况下,这种分页方式太耗费资源,所以建议使用存储过程分页

   分页的存储过程:

   --取得分页的总页数

   createproc UP_CAR_PAGECOUNT

@pagesizeint

   AS

    declare@cint

    select@c=count(*)fromcar

    returnceiling(cast(@casfloat)/cast(@pagesizeasfloat))

   GO

   --分页的存储过程

   createproc UP_CAR_PAGESELECT

    @pagesizeint,

    @nowpageint--,

   AS

    declare@cint

    declare@numint

    select@num=(@nowpage-1)*@pagesize

    select@c=count(*)fromcar

    if@pagesize>0

    begin

     declare@cmdvarchar(1000)

     select@cmd='selecttop'+cast(@pagesizeasvarchar(50))+'*fromcarasc1wherecodenotin(selecttop'+cast(@numasvarchar(50))+'codefromcarasc2orderbyc2.code)orderbyc1.code'

     exec(@cmd)

    end

   GO

    

    数据访问类代码:

   publicint GetPageCount(intpagesize)

   {

       SqlCommandcmd=conn.CreateCommand();

       cmd.CommandType=CommandType.StoredProcedure;

       cmd.CommandText="UP_CAR_PAGECOUNT";

       cmd.Parameters.AddWithValue("@pagesize",pagesize);

       cmd.Parameters.Add("@RETURN_VALUE",SqlDbType.Int).Direction=ParameterDirection.ReturnValue;

       conn.Open();

       cmd.ExecuteNonQuery();

       intn=(int)cmd.Parameters["@RETURN_VALUE"].Value;

       conn.Close();

       returnn;

   }

   publicList select(intpagesize,intnowpage)

   {

       Listlist=newList();

       CarDatadata;

       SqlCommandcmd=conn.CreateCommand();

       cmd.CommandType=CommandType.StoredProcedure;

       cmd.CommandText="UP_CAR_PAGESELECT";

       cmd.Parameters.AddWithValue("@pagesize",pagesize);

       cmd.Parameters.AddWithValue("@nowpage",nowpage);

       conn.Open();

       SqlDataReaderdr=cmd.ExecuteReader();

       while(dr.Read())

       {

           data=newCarData();

           data.Ids=(int)dr["ids"];

           data.Code=(string)dr["code"];

           data.Name=(string)dr["name"];

           data.Brand=(string)dr["brand"];

           data.Time=(DateTime)dr["time"];

           data.Oil=(decimal)dr["oil"];

           data.Powers=(int)dr["powers"];

           data.Exhaust=(int)dr["exhaust"];

           data.Price=(decimal)dr["price"];

           data.Pic=(string)dr["pic"];

           list.Add(data);

       }

       conn.Close();

       returnlist;

   }

    页面调用代码:

   privateconstintPAGESIZE=5;

   protectedvoidPage_Load(objectsender,EventArgse)

   {

       intpagecount=newCarDA().GetPageCount(PAGESIZE);

       for(inti=0;i

       {

            LinkButtonlb=newLinkButton();

           lb.Text=(i+1).ToString();

            lb.Click+=newEventHandler(lb_Click);

            Panel1.Controls.Add(lb);

           Literallt=newLiteral();

           lt.Text=" ";

            Panel1.Controls.Add(lt);

       }

       if(!

IsPostBack)

       {

            BindList("1");

       }

   }

   privatevoid BindList(stringnowpage)

   {

       ObjectDataSource1.TypeName="CarDA";

       ObjectDataSource1.SelectMethod="select";

        ObjectDataSource1.SelectParameters.Clear();

       ObjectDataSource1.SelectParameters.Add("pagesize",PAGESIZE.ToString());

       ObjectDataSource1.SelectParameters.Add("nowpage",nowpage);

       DataList1.DataSourceID=ObjectDataSource1.ID;

   }

   void lb_Click(objectsender,EventArgse)

   {

        LinkButtonlb=(LinkButton)sender;

       BindList(lb.Text);

   }

DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是:

DataList控件默认输出是一个HTML表格.DataList在输出时已经在相应的模板上套上了表格标签,而Repeater则是模板是什么样,输出就是什么样. 

总结二:

1.DataList显示数据

例1:

使用DataList显示数据    

DataList ID="DataList1" runat="server" DataSourceID="srcMovies">

    

        

<%#Eval("Title") %>

        Directed by:

<%#Eval("Director") %>

            

        Description:

<%#Eval("Description") %>

    

DataList> 

   以上的例子,在Repeater控件显示数据时也是使用这样的格式,但是输出的HTML就有点不同了,DataList输出了一张HTML表格:

 

collapse;">

    

        

 非常完美

 Directed by:

依萌Description:

 两年前,立志成……

    

    

        

 罗马假日  

 Directed by:

William WylerDescription:

 英国的安妮公主到罗马去访问,国务烦身

    

 

2.表格布局(Table)和流布局(Flow)

     ●RepeatLayout:

来确定是在表中显示还是在流布局中显示.可选值为Flow和Table 

   如果在上个例子中加入RepeatLayout属性为Flow,则输出如下所示:

 

    

 非常完美

 Directed by:

依萌Description:

 两年前,立志成…… 

    

 罗马假日

 Directed by:

William WylerDescription:

 英国的安妮公主到罗马去访问,国务烦身 

    …

3.多列显示数据

  从例1看出,默认的DataList是使用一行显示一项数据,但是可以通过以下属性让其一行显示多个数据项:

 

    ●RepeatColumn  :

需要显示的列数 

    ●RepeatDirection:

输出网格时的方向,可以为Horizontal(横),Vertical(纵) 

例2:

多列显示数据:

 

DataList ID="DataList1" runat="server" RepeatColumns="3" GridLines="Both" DataSourceID="srcMovies">

    

        

<%#DataBinder.Eval(Container.DataItem,"Title") %>

 

-- 为种绑定数据的方法与上面一种是一样的,只是写法不同 -->

        Directed by:

<%#Eval("Director") %>

            

        Description:

<%#Eval("Description") %>

    

DataList> 

4.DataList支持的模板

   除了ItemTemplate、AlternatingItemTemplate、SeparatorTemplate、HeaderTemplate、FooterTemplate外。

 

   DataList还支持另外两个模板:

 

     ●EditItemTemplate:

当行进入编辑状态时显示的样式 

     ●SelectedItemTemplate:

当列被选中时显示的样式 

例3:

通过FooterTempla

举报
举报
版权申诉
版权申诉
word格式文档无特别注明外均可编辑修改;预览文档经过压缩,下载后原文更清晰! 立即下载
配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
aspnet 学习 DataList 控件
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:aspnet学习之DataList控件.docx
链接地址:https://www.bdocx.com/doc/8691798.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开