快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
rdquo;),并且键入的数据无误时,才执行插入操作。代码如下 :

protected void Products_RowCommand(object sender, GridViewCommandEventArgs e)
{
  // Insert data if the CommandName == "Insert"
  // and the validation controls indicate valid data...
  if (e.CommandName == "Insert" && Page.IsValid)
  {
    // TODO: Insert new record...
  }
}

注意:

你可能会很奇怪为什么还要检查Page.IsValid属性呢?毕竟,如果在插入界面输 入了无效的数据时,页面回传会中断。检查Page.IsValid属性是为了防止用户未 启用JavaScript或巧妙的绕过客户端验证的情况。简而言之,如果没有进行客户 端进行有效性验证的话,在处理数据以前必须在服务器端再进行一次有效性验证 。

在第1步,ObjectDataSource控件ProductsDataSource的Insert()方法 映射的是ProductsBLL类的AddProduct方法。为了在表Products里添加新记录,我 们只需要简单的调用ObjectDataSource的Insert()方法:

protected void Products_RowCommand(object sender, GridViewCommandEventArgs e)
{
  // Insert data if the CommandName == "Insert"
  // and the validation controls indicate valid data...
  if (e.CommandName == "Insert" && Page.IsValid)
  {
    // Insert new record
    ProductsDataSource.Insert();
  }
}

现在可以调用Insert()方法,剩下的步骤是把在插入界面 键入的值传递给ProductsBLL类的AddProduct方法中的参数。就像在教程17章《研 究插入、更新和删除的关联事件》探讨的一样,可以通过ObjectDataSource控件 的Inserting事件来实现。在Inserting事件里,我们需要编程访问页脚行里的控 件,将其值赋给e.InputParameters集合。当用户忽略了某个值时—— 比如使ReorderLevel文本框为空,我们应该指定该值为NULL。因为AddProducts方 法允许那些nullable类型的列接收NULL值。代码如下:

protected void ProductsDataSource_Inserting
  (object sender, ObjectDataSourceMethodEventArgs e)
{
  // Programmatically reference Web controls in the inserting interface...
  TextBox NewProductName =
    (TextBox)Products.FooterRow.FindControl ("NewProductName");
  DropDownList NewCategoryID =
    (DropDownList)Products.FooterRow.FindControl ("NewCategoryID");
  DropDownList NewSupplierID =
    (DropDownList)Products.FooterRow.FindControl ("NewSupplierID");
  TextBox NewQuantityPerUnit =
    (TextBox)Products.FooterRow.FindControl ("NewQuantityPerUnit");
  TextBox NewUnitPrice =
    (TextBox)Products.FooterRow.FindControl ("NewUnitPrice");
  TextBox NewUnitsInStock =
     (TextBox)Products.FooterRow.FindControl ("NewUnitsInStock");
  TextBox NewUnitsOnOrder =
    (TextBox)Products.FooterRow.FindControl ("NewUnitsOnOrder");
  TextBox NewReorderLevel =
    (TextBox)Products.FooterRow.FindControl ("NewReorderLevel");
  CheckBox NewDiscontinued =
    (CheckBox)Products.FooterRow.FindControl ("NewDiscontinued");

  // Set the ObjectDataSource''s InsertParameters values...
   e.InputParameters["productName"] = NewProductName.Text;

  e.InputParameters["s

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号