首页 > 语言 > 关键词 > ASP.NET最新资讯 > 正文

ASP.NET立即上手教程(10)

2007-09-19 11:47 · 稿源:网页教学网

在SQL数据库中更新数据

在web应用程序中更新数据库常常是一件棘手的事情。DataGrid控件提供了一些内建的支持,使得更新数据库变得容易。要想编辑行记录,DataGrid支持一个整数类型的EditItemIndex属性,他用来指明表格控件的哪一行是可编辑的。当设定该属性之后,DataGrid中对应的行用输入框来代替标签。值-1表示没有可编辑的行。Asp.net页面可以在服务器端表单中包含DataGrid控件,通过DataGrid控件的对象模型来访问可编辑的数据。

为了判断哪一行将被编辑,你需要接收一些用户的输入,以此来判断他们将编辑哪一行。DataGrid可以包含EditCommandColumn属性,它提供了一个连接,用以激活三个特定的事件:EditCommand、UpdateCommand、和CancelCommand。EditCommandColumn被加在DataGrid的列集合中,如下面的例子所示:

以下为引用的内容:

<ASP:DataGrid id="MyDataGrid" runat="server"
 ...
 OnEditCommand="MyDataGrid_Edit"
 OnCancelCommand="MyDataGrid_Cancel"
 OnUpdateCommand="MyDataGrid_Update"
 DataKeyField="au_id"
>

 <Columns>
  <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" />
 </Columns>

</ASP:DataGrid>

在DataGrid标签上,可以绑定每一个从EditCommandColumn激活的命令事件句柄。这些句柄的DataGridCommandEventArgs参数可以让你直接访问从客户端选择的可编辑行索引值。注意,为了使更改生效,你需要重新绑定DataGrid,像下面的例子这样:

以下为引用的内容:
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E) {
  MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
  BindGrid();
}

当编辑DataGrid中的行的时候,EditCommandColumn提供了可供使用的两个连接:Update 和 Cancel。如果客户端选择了cancel,你只需将EditItemIndex设置为-1。如果客户端选择了Update,你需要对数据库执行你的更新命令。执行更新命令的时候,你需要知道被编辑行在数据库中对应记录的主键。为了支持这个功能,DataGrid提供了一个DataKeyField属性,可以用来设置主键对应的字段。在绑定到UpdateCommand的事件句柄中,你可以从DataGrid的数据键集合取得键的名称。你可以使用事件的ItemIndex来索引集合,像下面的例子:

myCommand.Parameters["@Id"].Value = MyDataGrid.DataKeys[(int)E.Item.ItemIndex];


在更新事件句柄结束以后,将EditItemIndex设置为-1。下面的例子演示了这种情况。

前面的例子中有一个问题,那就是当编辑一行的时候,主键字段(au_id)也提供了一个文本输入框。因为需要这个值来确定数据库中的哪一行记录被更新,所以你可能不希望客户端改变这个值。幸运的是,你可以通过详细指定每一个可编辑行的外观,来禁止该列提供文本输入框。具体方法是使用BoundColumn控件来分配每一列的数据字段,在DataGrid的列集合定义每一行。使用这种技术可以实现列的完全控制,当然也包括ReadOnly属性。对于au_id列,你可以设置它的ReadOnly属性为true。这样,当一行处于编辑模式的时候,au_id列依然显示为一个文本标签,而不是文本输入框。下面的例子演示了这种技术。

BoundColumn控件并非DataGrid的列集合中可以设置属性的唯一控件。你也可以指定TemplateColumn,它对列的内容提供了完全的控制。模板对内容的显示更具有随意性,你可以在DataGrid的列中提供你喜欢的任何控件,也包括服务器端控件。下面的例子演示了如何使用TemplateColumn,对"State"列使用下拉列表服务器控件,对"Contract"列使用复选框html控件。Asp.net数据绑定语法用于在模板中输出数据字段的值。注意在编辑行中映射下拉列表和复选框到的state时候有一点小技巧。

如同在TemplateColumn中放置下拉列表框或者复选框一样,你也可以在其中放置其他控件。下面的例子中,添加了一个Validator验证控件,在执行更新之前检查客户端的输入。

在SQL数据库中删除数据

从数据库中删除记录非常类似于更新或者插入命令,但是你依然需要确定表格中要删除的特定行。可以添加到DataGrid列中的另一个控件是ButtonColumn,它仅仅提供了一个按钮控件。ButtonColumn支持一个CommandName属性,可以设置为“Delete”。在DataGrid上,当你执行删除操作的时候,需要对DeleteCommand绑定一个事件句柄。此外,你需要使用数据键(DataKeys)集合来确定客户端选定的行。下面的例子演示了这一过程:

从SQL数据库中排序

对于任何表格来说,常常要求它对所包含的数据具有排序的能力。然而,DataGrid控件本身并不具有数据排序的功能。它通过用户单击要对数据排序的列标题,调用事件句柄。当DataGrid的 AllowSorting属性被设置为true,DataGrid就为列标题提供了一个超链接,用以对表格激活Sort命令。你可以给DataGrid的OnSortCommand属性设置句柄,来处理用户的单击。列的名字作为SortExpression 的属性,传递给DataGridSortCommandEventArgs的参数。该参数可以用来设置绑定到表格的DataView的Sort属性。请看下面的代码和例子。

以下为引用的内容:

<script>
  protected void MyDataGrid_Sort(Object Src, DataGridSortCommandEventArgs E) {
    ...
    DataView Source = ds.Tables["Authors"].DefaultView;
    Source.Sort = E.SortExpression;
    MyDataGrid.DataBind();
  }
</script>

<form runat="server">
  <ASP:DataGrid id="MyDataGrid" OnSortCommand="MyDataGrid_Sort" AllowSorting="true" runat="server" />
</form>

当你使用BoundColumn控件的时候,可以明确地为每一列设置SortExpression属性,就象下面的实例
C# DataGrid12.aspx
[运行] | [源代码]
运用主-从关系
常常有这样的情况:数据模型包含的关系不能仅仅通过一个表格来表现。很多时候,在基于web的界面中,用户选择数据中的某一行(通常是标题),然后重新定位到“细节”页面(通常是内容),显示用户所选行的详细信息。为了使用DataGrid来完成这个工作,需要添加HyperLinkColumn到列集合。HyperLinkColumn指定当用户单击超连接的时候将要重新定向的细节页面。你可以在这个超链接中使用格式化字符串语法提交字段值,字段值作为get方式提交字符串的参数。下面的例子演示了这一过程。

以下为引用的内容:
  <ASP:DataGrid id="MyDataGrid" runat="server">
   <Columns>
     <asp:HyperLinkColumn
      DataNavigateUrlField="au_id"
      DataNavigateUrlFormatString="datagrid13_details.aspx?id={0}"
      Text="Get Details"
     />
   </Columns>
  </ASP:DataGrid>

在细节页面中,可以取得提交字符串的参数,并且执行一个联合(join)查询语句,从数据库中获取详细信息。参阅下面的例子:

书写和使用存储过程

一般来说,执行特定的查询可以取得不同的执行性能。使用存储过程可以降低应用程序中数据库的负荷。存储过程很容易创建,甚至可以使用SQL语句来创建。下面的代码建立了一个简单的返回一个表的存储过程:

以下为引用的内容:
CREATE Procedure GetAuthors AS
  SELECT * FROM Authors
  return
GO

你也可以建立一个可以接受参数的存储过程,例如:

以下为引用的内容:
CREATE Procedure LoadPersonalizationSettings (@UserId varchar(50)) AS
  SELECT * FROM Personalization WHERE UserID=@UserId
  return
GO

ASP.NET页面中使用存储过程不过是SqlCommand对象的扩展。CommandText是用来代替特定查询文本的存储过程的名字。你可以通过设定CommandType的属性来指定SqlCommand的CommandText为存储过程。

myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;

下面的例子演示了调用存储过程来填充DataSet。

  • 相关推荐
  • 大家在看
  • 王自健上手华为MatePad Pro:看片完胜苹果

    6月9日晚,王自健评价华为MatePad Pro:看片秒苹果。MatePad Pro 5G是华为Mate系列新一代平板电脑,首销到手价为4999元。MatePad Pro 5G采用10.8英寸2K分辨率全面屏,屏占比90%,搭载麒麟

  • Esprinet以3400万欧元收购GTI

    [TechWeb]意大利批发商Esprinet宣布已与GTI达成协议,以购买该公司100%的股份。这项行动共计3380万欧元,将在当局于9月底批准时以现金支付。通过购买GTI,Esprinet凭借收入和与Tech Data的距离本身,成为西班牙市场上第一家批发商,该公司在过去几年中一直与该公司争夺排名第一的位置。此外,GTI将提供Esprinet,该公司在西班牙经营JoséMaríaGarcía(这是一项补充业务),该业务是通过云销售的软件,尤其是Microsoft的软件。?

  • Planet将通过SpaceX的火箭发射6颗Skysat卫星

    DoNews 6月10日消息(记者 刘文轩)据The Verge报道,卫星影像公司Planet将在6月和7月的两次卫星发射中,采用SpaceX的火箭,各运送3颗110kg重的卫星。至于价格,SpaceX则是以每公斤500美元的价格来计算,Planet发射副总裁Mike Safyan表示,SpaceX将发射费用压低到“难以置信”的程度。Planet原本运营着60颗中解析度卫星,2017年收购Google的Terra Bella卫星影像部门后,Planet拥有了7颗高解析度Skysat卫星。在这之后,Planet又发射

  • Win10五月更新已跑上手机:电话、短信都能用

    因为Windows 10 on ARM的存在,手机上运行Windows 10操作系统便有了理论可能。事实上,从2018年以来,爱折腾的机友们就没有停止过相关项目。据外媒报道,开发者已成功为一加6、小米MIX、Galax

  • 西瓜视频开通广告收益教程

    ​西瓜视频的广告一般会展示在视频开始或结尾的地方,开通西瓜视频广告收益后,作者将享有一定的广告收益。而平台为了平衡用户体验,并不是每次刷新都会有广告出现。那么怎么开通西瓜视频广告收益呢?以下是关于西瓜视频开通广告收益的详细介绍。

  • ColorOS 7.2潮玩功能汇总,上手根本停不下来

    OPPO Reno4 系列在 6 月 5 日正式发布,作为一台主打影像以及续航的新机,OPPO Reno4 系列已经「堆料满满」。不过OPPO似乎还不满足于此,在软件层面上,OPPO 全新系统小版本ColorOS 7. 2 还为OPPO Reno4 系列带来不少有趣的玩法。(OPPO Reno4 系列发布会上ColorOS 7. 2 带来不少潮玩功能)本次OPPO Reno4 系列搭载的ColorOS 7. 2 带来了OPPO 创新产品探索平台与用户共创社区——OPPO LAB。通过OPPO LAB,OPPO可以及时将新功能与服

  • 不会演戏的网红不是好厨子 ,剧情美食教程怎么上热门?

    当你无意间刷到这些视频时,小小的眼睛里开始出现大大疑惑。惊讶中有一丝不屑,不屑中又有一丝好奇。

  • 西瓜视频PC电脑版下载教程

    西瓜视频是一个内容覆盖很广的视频APP,里面的短视频内容很丰富。不过现在只有安卓版和iOS版,有人想要下载使用PC电脑版,具体在哪里可以下载呢,这里我们来看下电脑版的具体安装方法。

  • 雷军上手Redmi K30 Pro变焦版:真全面屏的感觉无与伦比

    6月30日晚间,雷军分享了上手Redmi K30 Pro变焦版的心得体会。雷军表示,我们在讨论产品的时候,有一些米粉超爱真全面屏。在屏下相机技术还不太成熟的时候,做弹出前置相机方案是唯一的方案。

  • 网友上手MIUI 12版小米10 Pro:感觉像换了台机器

    6月18日消息,一位网友的小米10 Pro升级到了MIUI 12稳定版,表示感觉像换了一台机器一样,各种流畅、各种漂亮的动画。小米产业投资部合伙人潘九堂表示,MIUI 12加持的小米10系列更香了。据

  • 有什么不错的蓝牙降噪耳机?618超级值得上手耳机名单

    首先,蓝牙耳机不少,蓝牙降噪耳机也不少,但是好用的蓝牙降噪耳机却不是很多,我觉得能够价格上合理还很实用的,能达到物超所值的地步,我总结几款熟知的蓝牙耳机!第一款Nank 南卡A1入耳式耳塞,对入耳式感冒的朋友可以重点注意了!!南卡A1采用全球享誉的ANC降噪技术,可识别噪音,随即主动发出修正信号,淡化背景音干扰,独享宁静时光。主动降噪深度最高可达28dB,非常值得推荐的蓝牙好物!!南卡 NANK/A1真无线蓝牙耳机 ANC主

  • docker怎么安装MySQL docker安装MySQL教程

    把MySQL放进Docker,总共需要几步?本次就通过社区版容器安装2个mysql实例,看一下部署有多简单。

  • 最强蜗牛怎么换区 超详细换区步骤教程

    ​最强蜗牛中其实是可以进行换区操作的,但是很多人还不明白到底要怎么才能进行换区,所以今天就来为大家分享一下最强蜗牛换区步骤教程。

  • 即刻怎么改密码 新版本即刻密码修改教程

    即刻APP经常的会碰到要修改密码的操作,很多人还不清楚在哪可以比较方便的改密码,下面就来为大家详细的介绍一下。

  • 荒野乱斗固定摇杆设置教程 摇杆怎么固定

    荒野乱斗中是可以使用摇杆的,很多玩家还不清楚怎么让摇杆固定设置好,下面就来为大家详细的介绍一下荒野乱斗固定摇杆设置教程。

  • 拼多多黑卡怎么分享不了 详细黑卡分享图文教程

    拼多多品牌黑卡是一个非常实用的东西,里面的钱是可以购买商品的时候直接进行抵扣现金的,能节省很多钱,有些朋友也想分享一些邀请码,但是不知道怎么分享,下面就来为大家详细的介绍一下黑卡分享图文教程。

  • 怎么录制视频教程?电脑录屏可以这样做

    怎么录制视频教程?我们经常会用视频来记录自己的生活,同样可以用视频的形式记录电脑上的内容。在电脑上录制视频,最好使用一些专业的录屏软件,能够提高录屏的质量。如果你也在寻找一个实用的录屏软件,那下面分享的方法可以帮助到你!方法一:windows系统录屏先分享一个适用于Windows系统的方法,推荐使用电脑中的“问题步骤记录器”。首先,打开电脑后打开电脑运行窗口,也可以使用快捷键“win+r”,打开“。然后输入“psr”,

  • 微信拍一拍功能怎么用 详细操作步骤教程

    微信在最近上线了一个很好玩的功能——拍一拍,这个功能最近在微信上比较流行,可以拍一拍朋友,比起之前的QQ抖动功能更加的具有一点“人味”,很多人还不知道微信拍一拍怎么用,下面就来为大家分享一下教程。

  • 最全教程!OKEx平台币OKB福利盛宴来袭

    专业的羊毛党的一个原则是:没有羊毛那就创造一只羊来薅!作为背靠最牛交易所OKEx的主流平台币OKB,现在都有哪些羊毛可以薅? 今天我们汇总一下比较值得一试且100%成功的那些OKB的福利! 一、通过OKB抢6. 1 折比特币和 61 个OKB (福利指数:★★★★★) 活动页面: 6 月 1 日12:00- 6 月 5 日18:00 【福利】 1、6. 1 折比特币:现在一个比特币均价是 70000 元,抽中的小伙伴,相当于直接薅到将近 3 万元的羊毛!! 2、 61 个OK

  • 日本动画电影《无限》线上首映 西瓜视频与Netflix全球同步播出

    【TechWeb】6月18日消息,今天下午6点,日本动画电影《无限》(又名《想哭的我戴上了猫的面具》)开启全球首映,在中国通过西瓜视频、抖音、今日头条平台上线。这是继BBC剧集《德古拉》后,西瓜视频再度实现与Netflix全球同步播出影视作品。届时,用户可在上述平台中付费观看该片。 公开资料显示,《无限》由日本著名导演佐藤顺一和柴山智隆联合执导,主要讲述女生笹木美代的青春奇幻故事,主打超萌轻甜治愈风格。绰号为“无限”?

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议