• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之二十三:基于用户对修改数据进行限制

在ASP.NET 2.0中操作数据之二十三:基于用户对修改数据进行限制

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了用户控件 asp.net,没有asp.net用户,asp.net,asp net培训,asp和asp.net的区别等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言

  很多Web程序都支持用户帐号,根据不同的登录用户提供不同的选项,报表等功能。例如,就我们的教程中,我们要允许供应商公司的一些账户能登录网站并更新它们的产品-包括产品名称和单价,或许还有供应商的信息,比如它们的公司名称,地址,以及联系人信息等等。此外,可能我们还想包含一些帐号留给我们自己公司用户,以便让它们能够登录并进行产品信息修改,比如股价,级别调整等等。我们的Web程序同时也可以允许匿名登录,但是仅仅让这些用户浏览数据。并包含一个系统用户,通过对ASP.NET页面中的数据控件能够进行数据的增,改,删。

  在这篇教程中,我们将考察如何动态地根据不同的访问用户来调整数据的修改能力。更进一步,我们新建一个页面,通过一个可编辑的DetailsView来显示供应商信息,以及一个GridView控件列出供应商提供的产品。如果访问者来自我们公司,它们可以查看任何供应商信息,编辑他们的地址,编辑任何一个供应商提供的产品信息。然而,如果用户来自某个具体某个公司,它们只能查看和修改他们自己公司的地址信息,或者修改他们那些没有缺货的商品信息。

http://files.weikejianghu.com/file_images/article/201605/20160507151152125.png

图1:一个来自我们公司的用户可以编辑任何一个供应商信息

http://files.weikejianghu.com/file_images/article/201605/20160507151152126.png

图2:一个来自某个供应商公司的他只能查看和编辑他们自己的信息

让我们开始吧!

  注意:ASP.NET 2.0的MemberShip体系提供了一个可以创建,管理,验证用户帐号的标准的,可以扩展的平台。考虑到考察membership体系已经超出了本文的内容,本文将假设匿名用户已经通过了membership体系,可以认为他们是来自一个具体的供应商或者是我们公司。有关更多membership的内容,可以参考我的 考察ASP.Net 2.0 的Membership, Roles, Profiles文章系列。

第一步: 允许用户能够指定他们的访问权限

  在实际的Web应用程序中,一个用户的帐号信息已经包含了识别他们是来自我们公司或者供应商,而且这种信息在用户一登录之后便可以在ASP.NET中代码访问到。这个信息可以通过ASP.NET 2.0的角色体系获取,作为档案系统或者其他业务上的用户帐号信息。

  由于这篇教程是示范针对不同登录用户调整数据修改的能力, 并不是要凸显使用ASP.NET 2.0的membership,roles,和profile系统,我们会使用一种很简单的机制来决定用户访问网页的这种能力-通过一个下拉框,用户可以选择他们想要查看或修改任何一个供应商的信息,或者是作为一个供应商,只能查看和修改自己的信息。如果用户使用默认的可以查看和修改任何供应商信息,那么她分页查看所有的供应商,编辑他们的地址信息,以及编辑选择的某个供应商的产品的名字或者单价。如果选择了只能查看和编辑某个供应商的信息,那么她只能查看这个供应商的产品具体信息,更新那些没有过期的产品的名称和单价。

  接下来我们将要新建一个DropDownList并给它填充系统供应商信息数据。打开EditInsertDelete文件夹下的UserLevelAccess.aspx页面,添加一个DropDownList控件,设置它的ID属性为Suppliers,并绑定到一个命名为AllSuppliersDataSource的ObjectDataSource控件。

http://files.weikejianghu.com/file_images/article/201605/20160507151156127.png

图3:创建一个名为AllSuppliersDataSource的ObjectDataSource控件

  因为我们想要DropDownList显示所有的供应商,我们配置ObjectDataSource调用SuppliersBLL类中的GetSuppliers()方法。同时确保控件的Update()方法映射到SuppliersBLL类的UpdateSupplierAddress方法,而这个ObjectDataSource控件将同时被下一步中的DetailsView控件使用。完成ObjectDataSource的设置后,再完成设置Suppliers下拉框控件,让它的每个ListItem显示数据成员为CompanyName,数据成员的值为SupplierID。

http://files.weikejianghu.com/file_images/article/201605/20160507151156128.png

图4:配置Suppliers DropDownList使用CompanyName和SupplierID数据成员

  到这里,这个DropDownList列出了数据库中的所有供应商的名字。然而,我们还需要对下拉框添加一个“显示/编辑所有供应商”的选项。可以通过设置Suppliers下拉框的AppendDataBoundItem属性为true,并添加一个ListItem,设置它的Text属性为“显示/编辑所有供应商”,value属性为-1来实现。这些可以通过直接声明标记语言或者在属性窗口的设计器中点击下拉框的Item属性来添加完成。

  注意:可以回头参考教程《使用DropDownList过滤的主/从报表 》获得关于添加一个下拉框中“显示所有”选项的详细讨论。通过设置AppendDataBoundItems属性和添加ListItem后,这个DropDownList的声明标记如下所示:

<asp:DropDownList ID="Suppliers" runat="server" AppendDataBoundItems="True"
  DataSourceID="AllSuppliersDataSource" DataTextField="CompanyName"
  DataValueField="SupplierID">
  <asp:ListItem Value="-1">Show/Edit ALL Suppliers</asp:ListItem>
</asp:DropDownList>
</div>

http://files.weikejianghu.com/file_images/article/201605/20160507151159129.png

图5是一个当前在浏览器中操作的截图。

  图5:包含一个“Show ALL”的ListItem的Suppliers下拉框,以及其他每个供应商名称

  由于我们想让用户改变选择后,立刻更新用户界面,我们需要设置Suppliers下拉框的AutoPostBack属性值为true。在第二步中我们将创建一个DetailsView控件来显示基于用户选择后显示的供应商详细信息。然后,在第三步中,我们会创建一个下拉框的SelectedIndexChanged事件的处理器,在代码里面我们将根据当前的选择来把具体的供应商信息绑定到DetailsView控件中。

第二步:添加一个DetailsView控件

  让我们使用DetailsView控件来显示供应商信息。对于能够查看和编辑所有供应商信息的用户,这时DetailsView将支持分页,并允许用户逐个查看每个供应商资料。如果用户是其中的某个供应商,这时DetailsView将只显示当前这个供应商信息,而且不会包含分页的界面。在两种情况下,DetailsView都将允许用户能够编辑所能访问到的供应商的地址,城市和国家等属性值。

  在Suppliers下拉框下添加一个DetailsView,并设置它的ID属性为SupplierDetails,然后把它绑定到前面创建的AllSuppliersDataSource ObjectDataSource控件。之后,在DetailsView的智能标签中打开Enable Paging和Enable Editing 的多选框。

  注意:如果你在DetailsView标签代码中没有看到Enable Edit属性,那是因为你没有把ObjectDataSource的Update()方法

  绑定到SuppliersBLL类的UpdateSupplierAddress方法。花一点事件回过去重新设置一下,然后再回来就能看到Enable Edit属性。由于SuppliersBLL类的UpdateSupplierAddress方法只允许有四个参数-supplierID,address,city以及country,需要修改DetailsView的BoundFields让CompanyName和Phone两个BoundFields是read-only。此外,把SupplierID这个BoundField完全删除。最后,这个AllSuppliersDataSource控件已经含有一个OldValuesParameterFormatString属性,值为original_{0}。再花些时间把它完全删除或者修改它的值为默认值{0}。通过对SupplierDetails这个DetailsView控件以及对AllSuppliersDataSource这个ObjectDataSource控件的设置,我们的代码将如下所示:

<asp:ObjectDataSource ID="AllSuppliersDataSource" runat="server"
  SelectMethod="GetSuppliers" TypeName="SuppliersBLL"
  UpdateMethod="UpdateSupplierAddress">
  <UpdateParameters>
    <asp:Parameter Name="supplierID" Type="Int32" />
    <asp:Parameter Name="address" Type="String" />
    <asp:Parameter Name="city" Type="String" />
    <asp:Parameter Name="country" Type="String" />
  </UpdateParameters>
</asp:ObjectDataSource>
<asp:DetailsView ID="SupplierDetails" runat="server" AllowPaging="True"
  AutoGenerateRows="False" DataKeyNames="SupplierID"
  DataSourceID="AllSuppliersDataSource">
  <Fields>
    <asp:BoundField DataField="CompanyName" HeaderText="Company"
      ReadOnly="True" SortExpression="CompanyName" />
    <asp:BoundField DataField="Address" HeaderText="Address"
      SortExpression="Address" />
    <asp:BoundFie



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET数据绑定控件详解
  • asp.net webform自定义分页控件
  • asp.net分页控件使用详解【附实例下载】
  • 解析asp.net的分页控件
  • ASP.NET中控件的EnableViewState属性及彻底禁用
  • ASP.NET的广告控件AdRotator用法分析
  • Asp.net中使用文本框的值动态生成控件的方法
  • asp.net控件DataList分页用法
  • 在ASP.NET 2.0中操作数据之三十二:数据控件的嵌套
  • 在ASP.NET 2.0中操作数据之二十七:创建自定义排序用户界面

相关文章

  • 2017-05-11动态代理的5模式使用示例和Mixin模式
  • 2017-05-11如何解决Ajax请求结果的缓存问题说明
  • 2017-05-11.NET事件监听机制的局限与扩展分析
  • 2017-05-11浏览器窗口滚动加载数据采用异步形式从后台加载数据
  • 2017-05-11DataTable转成字符串复制到txt文本的小例子
  • 2017-05-11Asp.Net上传图片验证代码的小例子
  • 2017-05-11使用DataTable.Select 方法时,特殊字符的转义方法分享
  • 2017-05-11.NET中获取程序根目录的常用方法介绍
  • 2017-05-11asp.net数据绑定时动态改变值的代码
  • 2017-05-11asp.net Textbox服务器控件

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net Web Service 接口大量数据传输解决方案
    • 比较简单的将数据信息导入wrod文档方案(C# for word)
    • asp.net MaxLengthValidator 最大长度验证控件代码
    • indexof 和 indexofany的区别介绍
    • .net core2.0下使用Identity改用dapper存储数据(实例讲解)
    • ASP.NET实现学生管理系统
    • 总结ASP.NET C#中经常用到的13个JS脚本代码
    • IIS应用池回收造成Application_Start中定时执行程序停止的问题的解决方法
    • .Net微信开发之如何解决access_token过期问题
    • asp.net下生成99个不同的随机数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有