DataList用法总结

来源:互联网 发布:关颖珊离婚知乎 编辑:程序博客网 时间:2024/06/11 01:16
 
设计模版:
页眉<HeaderTemplate>列表控件的页眉。它不是数据绑定的。
</HeaderTemplate>
页脚<FooterTemplate> 列表控件的页脚。它不是数据绑定的。
</FooterTemplate>
数据记录<ItemTemplate>列表控件中的项。它是数据绑定的。
</ItemTemplate>
<AlternatingItemTemplate>交替显示项
</AlternatingItemTemplate>
<SelectedItemTemplate>列表控件中的选定项。它是数据绑定的。  
</SelectedItemTemplate>
<EditItemTemplate> 编辑时的显示方式,列表控件中当前处于编辑模式的项,它是数据绑定的。
</EditItemTemplate>
<SeparatorTemplate> 列表控件中项之间的分隔符。它不是数据绑定的。
</SeparatorTemplate>
Pager  页导航,显示定位到与 DataGrid 控件关联的不同页的控件。它不是数据绑定的。
编辑模版,里面可以嵌入控件,绑定数据。
<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)

   //可以根据传入事件名称e.CommandName在一个函数中处理不同要求的按钮的事件。
      {
     case "select":
             this.DataList1.SelectedIndex=e.Item.ItemIndex;
              string s=(string)this.DataList1.DataKeys[e.Item.ItemIndex];

              //注意这儿一定要设置DataKeyField,S可以作为参数传到其他页面;
              //在此获得该条记录的详细数据,在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(objectsender,System.Web.UI.WebControls.DataListItemEventArgs e)
{
switch(e.Item.ItemType)
   case ListItemType.Header://指触发对象的类型是DadaList里的标题行的内容
              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))

//指触发对象的类型是DadaList里的基本行或是替换行(简单的说是DataList里的所有数据项内容)
    {
        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;    }
    }

  1. <asp:DataList id="DataList1"
  2.     runat="server"  RepeatColumns="1"
  3.     BorderColor="#000099" CellPadding="0"
  4.     BorderWidth="1px" GridLines="Both" Height="165px" Width="279px" OnItemCommand="DataList1_ItemCommand" OnSelectedIndexChanged="DataList1_SelectedIndexChanged" DataKeyField="EmployeeID" >
  5.      <HeaderTemplate>  学生信息情况  </HeaderTemplate>
  6.      <SelectedItemTemplate>
  7.      姓名:<%# DataBinder.Eval(Container.DataItem, "FirstName")%>
  8.     (编号:<%# DataBinder.Eval(Container.DataItem, "EmployeeID")%><br>
  9.      性别:<%# DataBinder.Eval(Container.DataItem, "Title")%><br>
  10.      专业:<%# DataBinder.Eval(Container.DataItem, "TitleOfCourtesy")%><br>
  11.     班级:<%# DataBinder.Eval(Container.DataItem, "BirthDate")%><br>
  12.     住址:<%# DataBinder.Eval(Container.DataItem, "Address")%><br>   
  13.     <asp:LinkButton ID="LinkButton1" Runat="server" CommandName="close">关闭</asp:LinkButton>
  14.     </SelectedItemTemplate>
  15.     <AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
  16.      <SeparatorStyle BackColor="#339966"></SeparatorStyle>
  17.     <ItemTemplate>
  18.      编号:<%# DataBinder.Eval(Container.DataItem, "EmployeeID")%>
  19.      姓名:<%# DataBinder.Eval(Container.DataItem, "FirstName")%>
  20.      <asp:LinkButton ID="LinkButton2" Runat="server" CommandName="moreinfo" >
  21.     详情</asp:LinkButton>
  22.      </ItemTemplate>
  23.      <HeaderStyle Font-Names="宋体" Font-Bold="True" BackColor="LightSteelBlue"></HeaderStyle>
  24. </asp:DataList>
  1. protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
  2.     {
  3.         switch (e.CommandName)
  4.         {
  5.             case "moreinfo":
  6.                 this.DataList1.SelectedIndex = e.Item.ItemIndex;//绑定当前行,显示详细信息.
  7.                 //string s = DataList1.DataKeys[e.Item.ItemIndex].ToString();
  8.                 //在此获得该条记录的详细数据,在SelectedItemTemplate模版里显示              
  9.                 break;
  10.             case "close":
  11.                 this.DataList1.SelectedIndex = -1;
  12.                 break;
  13.         }
  14.         bind();
  15.     }
原创粉丝点击