asp.net datalist 用法
程序员文章站
2024-03-11 11:28:07
设计模版: 页眉 页脚 <...
设计模版:
页眉
<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; }
}
页眉
<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; }
}
上一篇: 一个简单的自定义程序日志小样例
下一篇: mvc架构实现商品的购买(二)