使用DataList吧

这是个具有明显煽动性的标题,没错,在这里就是提议大家使用DataList。
在MSDN中文站有一篇关于repeater,datalist和datagrid的性能测试的文章,我也把这篇文章转到了我的站的“转载嘿嘿 希望你接受我的教训 一定早做打算 精华”里,这是篇不错的文章,里面有对这三个控件的详细的分析。其中从性能比较可以很清楚的看到repeater和datalist在效率上基本没有区别,而datalist和repeater相比还有很多优秀的性能。当然在进行简单处理的时候还是repeater好用一些,但如果要做“留言本”级的系统的时候,用datalist就有很明显的优势!

图:性能比较
不过还是要详细的说说这个DataList,我们使用它主要是因为它有四个命令select/edit/update/cancel,以及与之相应的两个模板selecteditemtemplate/edititemtemplate.根据我的观察,好象每次点击按钮执行操作的时候,都会引发OnItemCommand所指定的事件,所以大家在使用OnItemCommand时一定要注意。但是我们也可以利用这个特性来使用DataList所缺少的delete命令,办法就是在需要的行添加一个<asp:LinkButton ID="link_delete" Commandname="delete" Text="delete" runat="server"></asp:LinkButton>,因为每次点击按钮都要先执行OnItemCommand所指定的DataList_OnSelectedCommand事件,我们就可以在这里面加上对delete事件的定义:


//选择时的事件
private void dl1_selected(object sender,DataListCommandEventArgs e){
//删除记录
if(e.CommandName=="delete"){
// do something about delete 
}
//结束删除记录
else{
dl1.SelectedIndex=e.Item.ItemIndex;
set();
lb2.Text="select";
}
} 


这样就完成了一次删除过程。同样的,如果需要定义其他别的什么功能有,也可以放到这里面来。
最后再说一下DataList的工作方式,对DataList还不是很熟悉的朋友可以接着往下读。
这是一个datalist控件的简单引用,用来指定事件的处理程序。
<asp:DataList ID="dl1" runat="server" OnItemCommand="dl1_selected" OnEditCommand="dl1_edit" OnCancelCommand="dl1_cancel" OnUpdateCommand="dl1_update">
DataList的selecteditemtemplate/edititemtemplate模板并不是一开始就显示在网页上,而是当用户单击了CommandName为select/edit的按钮后才会对应的出现,而像我们上面所说的,当没有指定任何select或edit的commandname时,selecteditemtemplate就会出来,而当你把commandname设为edit/update/cancel时,这个selecteditemtemplate就不会出现。

//点击编辑按扭的事件
private void dl1_edit(object sender,DataListCommandEventArgs e){
dl1.EditItemIndex=e.Item.ItemIndex;
set();
}
//点击取消按扭的事件
private void dl1_cancel(object sender,DataListCommandEventArgs e){
dl1.EditItemIndex=-1;
set();
}
//点击更新按扭的事件
private void dl1_update(object sender,DataListCommandEventArgs e){
//do something about update 
} 


按照上面的代码,点edit的时候edititemtemplate就会出现,而点cancel的时候就会恢复成select的样子(注意不是什么都没有点的样子),点update自然就会转到执行相关的update操作。说是datalist的一些命令,其实还是得我们自己来指定。

 

 

### 如何使用 HTML `<datalist>` 元素创建输入提示列表 `<datalist>` 元素用于为 `<input>` 字段提供预定义选项,从而增强用户体验并简化用户输入过程[^3]。以下是具体实现方式: #### 基本语法结构 ```html <label for="example">选择或输入:</label> <input list="options" id="example" name="example"> <datalist id="options"> <option value="选项一"> <option value="选项二"> <option value="选项三"> </datalist> ``` - **`<input>`**:需要与 `list` 属性关联到对应的 `<datalist>` 的 ID。 - **`<datalist>`**:包含一系列的 `<option>` 元素,这些元素代表可供用户选择的建议项。 #### 完整示例 以下是一个完整的 HTML 示例,展示如何使用 `<datalist>` 实现自动完成功能[^2]: ```html <!DOCTYPE html> <html> <head> <title>自动完成输入框</title> </head> <body> <label for="city">请输入城市名:</label> <input list="cities" id="city" name="city" placeholder="开始输入..."> <datalist id="cities"> <option value="北京"> <option value="上海"> <option value="广州"> <option value="深圳"> <option value="杭州"> </datalist> </body> </html> ``` 在这个例子中,用户可以在输入框中键入内容时获得下拉提示,这些建议来源于 `<datalist>` 中定义的 `<option>` 列表。 #### 特性和注意事项 1. 用户可以选择 `<datalist>` 提供的选项之一,也可以自由输入其他值[^3]。 2. 如果希望将用户的最终输入限制为 `<datalist>` 所列选项,则需借助 JavaScript 验证输入的有效性。 3. `<datalist>` 不会直接渲染在页面上;它的作用仅限于辅助 `<input>` 输入[^2]。 --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值