加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在ASP.NET 2.0中操作数据之三十六:在DataList里编辑和删除数据

发布时间:2016-11-23 22:17:20 所属栏目:MsSql教程 来源:站长网
导读:导言 概述插入、更新和删除数据 里我们已经学习了如何使用GridView等控件来插入,更新删除数据。通过ObjectDataSource和其它数据控件仅仅只需要在智能标签里勾一下checkbox就完成了,不需要写任何代码。而DataList没有这些内置的功能。我们可以使用1.x 里


  注意:图10里的Edit DataBindings对话框里并不包含“双向数据绑定”的checkbox,而在编辑GridView或DetailsVIew里的TemplateField,或者FormView里的template里时是有这个checkbox的。双向数据绑定允许在插入或更新数据时,输入控件的值自动赋给相关联的ObjectDataSource的InsertParameters或UpdateParameters。DataList并不支持双向绑定—我们在后面会看到,在用户作出更改,准备更新数据时,我们需要编程将Textbox的Text的值传给ProductsBLL类的UpdateProduct方法。


  最后我们在EditItemTemplate里加入Update和Cancel按钮。象前面看到的那样,当设置了CommandName的Repeater或DataList里的Button,LinkButton或ImageButton被点击时,Repeater或DataList的ItemCommand事件被激发。对DataList来说,如果CommandName设为某个值,另外一个事件也会被激发,如下:


“Cancel” — 激发 CancelCommand event
“Edit” — 激发 EditCommand event
“Update” — 激发UpdateCommand event

  记住除了ItemCommand外,这些事件会激发。

  为EditItemTemplate添加两个Button,一个CommandName设为"Update",一个设为"Cancel"。完成后,设计界面看起来应该和下面差不多:

/uploads/allimg/c161121/14OI932940Z-561I0.png
图 11: 为 EditItemTemplate 添加Update 和Cancel 按钮

你的标记语言看起来应该和下面差不多:

<asp:DataList ID="DataList1" runat="server" DataKeyField="ProductID"
 DataSourceID="ObjectDataSource1" RepeatColumns="2">
 <ItemTemplate>
 <h5>
  <asp:Label runat="server" ID="ProductNameLabel"
  Text='<%# Eval("ProductName") %>' />
 </h5>
 Price: <asp:Label runat="server" ID="Label1"
   Text='<%# Eval("UnitPrice", "{0:C}") %>' />
 <br />
 <br />
 </ItemTemplate>
 <EditItemTemplate>
 Product name:
  <asp:TextBox ID="ProductName" runat="server"
  Text='<%# Eval("ProductName") %>' /><br />
 Price:
  <asp:TextBox ID="UnitPrice" runat="server"
  Text='<%# Eval("UnitPrice", "{0:C}") %>' /><br />
 <br />
 <asp:Button ID="UpdateProduct" runat="server"
  CommandName="Update" Text="Update" /> 
 <asp:Button ID="CancelUpdate" runat="server"
  CommandName="Cancel" Text="Cancel" />
 </EditItemTemplate>
</asp:DataList>
   

第五步: 添加进入编辑模式的入口

  现在我们的DataList有一个编辑界面了。然而现在还没有办法来体现出用户需要编辑product信息。我们需要为每个product加一个Edit button,当点击时,将DataList item展示为编辑模式。同样的可以通过设计器或直接声明代码来添加。确保将Edit button的commandName属性设为"Edit".添加完后,浏览一下页面。

/uploads/allimg/c161121/14OI9329A420-5G310.png
图 12: 添加Edit Buttons

  点击button会引起postback,但是并没有进入product的编辑模式。为了完成这个,我们需要:

  设置DataList的 EditItemIndex property 为 被点击了Edit button的 DataListItem的 index .
  重新绑定数据到 DataList. 当 DataList 重新展现时, 和DataList的EditItemIndex相关的DataListItem 会展现EditItemTemplate.

  由于在点Edit button时,DataList的EditCommand事件被激发,使用下面的代码创建一个EditCommand event handler :

protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
    // Set the DataList's EditItemIndex property to the
    // index of the DataListItem that was clicked
    DataList1.EditItemIndex = e.Item.ItemIndex;
    // Rebind the data to the DataList
    DataList1.DataBind();
}
           

  EditCommand event handler 的第二个参数类型为DataListCommandEventArgs ,它是被点击的Edit button的DataListItem的引用(e.Item).首先设置DataList的EditItemIndex为想编辑的DataListItem的ItemIndex,然后重新绑定数据。完成后再浏览页面。点Edit button,现在product变成了可编辑的。见图13。

/uploads/allimg/c161121/14OI932c260-5XE7.png
图 13: 点Edit Button 使Product 可编辑

第六步: 保存用户的更改

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读