快速业务通道

ASP.NET 2.0数据教程之五十三:从GridView的页脚插入新记录

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
upplierID"] =
     Convert.ToInt32(NewSupplierID.SelectedValue);
   e.InputParameters["categoryID"] =
     Convert.ToInt32(NewCategoryID.SelectedValue);

  string quantityPerUnit = null;
  if (!string.IsNullOrEmpty (NewQuantityPerUnit.Text))
    quantityPerUnit = NewQuantityPerUnit.Text;
  e.InputParameters ["quantityPerUnit"] = quantityPerUnit;

   decimal? unitPrice = null;
  if (!string.IsNullOrEmpty (NewUnitPrice.Text))
    unitPrice = Convert.ToDecimal (NewUnitPrice.Text);
  e.InputParameters["unitPrice"] = unitPrice;

  short? unitsInStock = null;
  if (! string.IsNullOrEmpty(NewUnitsInStock.Text))
    unitsInStock = Convert.ToInt16(NewUnitsInStock.Text);
  e.InputParameters ["unitsInStock"] = unitsInStock;

  short? unitsOnOrder = null;
  if (!string.IsNullOrEmpty (NewUnitsOnOrder.Text))
    unitsOnOrder = Convert.ToInt16 (NewUnitsOnOrder.Text);
  e.InputParameters ["unitsOnOrder"] = unitsOnOrder;

  short? reorderLevel = null;
  if (!string.IsNullOrEmpty (NewReorderLevel.Text))
    reorderLevel = Convert.ToInt16 (NewReorderLevel.Text);
  e.InputParameters ["reorderLevel"] = reorderLevel;

   e.InputParameters["discontinued"] = NewDiscontinued.Checked;
}

添加完Inserting事件处理器 后,我们就可以通过GridView控件的页脚行添加记录了。开始吧,尝试添加几个 产品。

优化并自定义Add操作

一般来说,点击Add按钮后,就将为 数据库添加一个新记录。但是没有任何直观的提示反映成功地添加了记录。的确 ,应该用一个Label Web控件或客户端的消息框提示用户已经成功地添加了产品, 我把它作为一个练习留给读者。

本文使用的GridView控件没有对所显示的 产品进行任何排序,也未允许最终用户对数据排序。因此,产品依它们在数据库 中的次序排序——依主键值顺序。由于每条新添加的记录的ProductID 值比上一条的值大,所以,当添加新记录时,它就自然地排到最后一位了。因此 ,当添加新记录时,你希望自动地转到GridView控件的最后一页。怎么才能

办到呢?在RowCommand事件处理器里,调用ProductsDataSource.Insert ()方法后,紧接着添加如下一行代码,它说明当数据绑定到GridView后将转到最 后一页:

// Indicate that the user needs to be sent to the last page

SendUserToLastPage = true;

其中SendUserToLastPage是页 面层(page-level)的布尔变量,其初始值为false。在GridView控件的 DataBound事件处理器中,如果SendUserToLastPage为false(译注:应该是true ),PageIndex属性将使用户转到最后一页。

protected void Products_DataBound(object sender, EventArgs e)
{
  // Send user to last page of data, if needed
  if (SendUserToLastPage)
    Products.PageIndex = Products.PageCount - 1;
}

为什么我们要在DataBound事件处理器(而不是在RowCommand事件 处理器)里设置PageIndex属性呢?如果在RowCommand里设置PageIndex属性的话 ,它返回的是在添加新记录之前的PageIndex值。在大多数情况下,这样做是没有 问题的,但是,如果新添加的记录刚好落到新的一页(译注:比如原本有80个产 品,分为8页显示,此时末页的PageIndex为7,当添加第81条记录时,新添加的产 品变成第9页第1条记录了,此时末页的PageIndex为8,而不是添加产品

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号