DataList用法总结

设计模版:

页眉<HeaderTemplate>  

</HeaderTemplate>

页脚<FooterTemplate>

</FooterTemplate>

数据记录<ItemTemplate>

</ItemTemplate>

<AlternatingItemTemplate>    交替显示项

</AlternatingItemTemplate>

<SelectedItemTemplate>选中时的显示方式   

</SelectedItemTemplate>

<EditItemTemplate> 编辑时的显示方式

</EditItemTemplate>

<SeparatorTemplate>   数据记录分隔符

</SeparatorTemplate>

编辑模版,里面可以嵌入控件,绑定数据。

<ItemTemplate>

   <table>

   <tr>

    <td><%# DataBinder.Eval(Container.DataItem, "持股名称") %></td>

    <td><%# DataBinder.Eval(Container.DataItem, "市值", "{0:n}") %></td>

    <td><%# DataBinder.Eval(Container.DataItem, "净值", "{0:n}") %></td>

   </tr>

</table>

</ItemTemplate>

设置外观

RepeatLayout         属性设置显示方式

RepeatDirection      显示方向

RepeatColumns       列数

事件

加入模版列的按钮会将其click事件反升到 ItemCommand 事件,也可设置 CommandName

来响应不同的事件,如设为:edit,即引发EditCommand()等。

注:若设为:select 则会引发SelectedIndexChanged 和ItemCommand事件

SelectedItemTemplate模版;   添加详细信息的控件,当用户选择了该项,选择模版则显示。

private void DataList1_ItemCommand(……)

{   switch(e.CommandName)

     {

    case "select":

            this.DataList1.SelectedIndex=e.Item.ItemIndex;

             string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];

             //在此获得该条记录的详细数据,在SelectedItemTemplate模版里显示。

             break;

     case "unselect":

           this.DataList1.SelectedIndex=-1;

      break;

   }

   this.DataList1.DataBind();//一定要

}

EditItemTemplate模版

   编辑:

   this.DataList1.EditItemIndex=e.Item.ItemIndex;

    this.DataList1.DataBind();

   更新:

得到主键

string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];

得到模版里的控件

TextBox box=(TextBox)e.Item.FindControl("TextBox1");

更新记录

this.DataList1.DataBind();

   取消:

this.DataList1.EditItemIndex=-1;

this.DataList1.DataBind();

删除项

一次勾选多条记录,一次删除

             foreach(DataListItem i in this.DataList1.Items)

    {

    bool IsChecked=((CheckBox)i.FindControl("deletectr")).Checked;

                 if(IsChecked)

                 {

                     string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];

   删除操作       }

         }

运行中自定义DataList控件

//当创建DataList控件中的任意项时

private void DataList1_ItemCreated(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)

{

switch(e.Item.ItemType)

{   case ListItemType.Header:

            e.Item.ForeColor=Color.Red;

             e.Item.BackColor=Color.Black;

             break;

     case ListItemType.Item:

             e.Item.BackColor=Color.Black;

              break;

   }

}

//当模版中的项被数据绑定时发生,数据被显示到客户端前加以访问的最后机会

private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)

{

if((e.Item.ItemType==ListItemType.Header)||(e.Item.ItemType==ListItemType.Item))

   {

       System.Data.Common.DbDataRecord drv=

          (System.Data.Common.DbDataRecord)e.Item.DataItem;

           if((decimal)drv["库存量"]<1000)

      {

     e.Item.ForeColor=Color.Red;

       }

    }

}

另种方式

   if((e.Item.ItemType==ListItemType.Header)||(e.Item.ItemType==ListItemType.Item))

             {

            DataRowView drv=(DataRowView)e.Item.DataItem;

                string department=(string)drv["部门"];

                 switch(department)

                 {   case "销售部":

                      e.Item.BackColor=Color.Black;

                          break;

              case "技术部":

                       e.Item.BackColor=Color.Red;

    break;   }

   }

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/trip_008/archive/2007/04/16/1566364.aspx

posted @ 2011-06-01 15:12  俗雅冰山  阅读(212)  评论(0编辑  收藏  举报