Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >WebForm的Grid页面页脚DropDownList事件[通俗易懂]

WebForm的Grid页面页脚DropDownList事件[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-11-04 05:34:23
发布于 2022-11-04 05:34:23
6340
举报

大家好,又见面了,我是你们的朋友全栈君。

帖子 http://community.csdn.net/Expert/topic/3506/3506615.xml?temp=.5394251 中,提到了一个很有意思的问题。

【我的datagrid的页脚有一个dropdownload控件,如果是一个BUTTON按钮的话,可以在datagrid的 DG_Card_ItemCommand事件里来响应BUTTON按钮的事件,e.CommandName==”IButton_Name”得到

而我现在是一个dropdownload控件,当它选定一条记录的时候,怎么触发他的事件啊】

之前我也曾经看到过类似的问题,想当然的认为加上一个事件不就可以了吗 但是发现 在模板列,或者页眉页脚里面的DropDownList 激发不了Grid的ItemCommand事件 根本捕获不了

这算是一个大大的误区吧,没有任何验证的情况下,我居然认为,Grid里面的其他控件,只能通过激活 Grid的Itemcommand的事件来进行自己的事件操作。浮浅的很,-_-#。

于是就想好好的看看这个问题的到底怎么个意思。

参考了一些资料(包括Sunmast这个小 样 儿的blog),另外和戏子这个JR讨论了一下,终于有点明白了。

转载Sunmast的blog

By icyer(我们的大斑竹) from CSDN

首先来看看这两个事件 ItemDataBound,ItemCreated的发生时间

ItemDataBound嘛,只要执行了DataBind方法,就会马上激发这个事件。 ItemCreated呢,如果页面是第一次访问(Page.IsPostBack = false),那在第一次执行DataBind的时候,会先激发ItemCreated事件,也就是说,执行了DataBind后,首先会用ItemCreated来建立Header行,然后用ItemDataBound来绑定Header行,再用ItemCreated来建立第一行,再调用ItemDataBound来绑定第一行,也就是说ItemCreated和ItemDataBound是交替执行的。 页面返回时,也会执行ItemCreated事件,在Page_Load之前,但是这时候就不会再执行ItemDataBound事件了。

我们写程序的时候,一般都会有这个 Page_Load if(!Page.IsPostBack) { DataGrid1.DataSouce = ……….; DataGrid1.DataBind(); }

所以,在页面第一次加载的时候,我们是执行了这个ItemDataBound事件的。 但是当页面回发的时候,这个ItemDataBound事件就不再执行了。 众所周知,ViewState不会记住控件的事件,只会记住一些属性。 事件的恢复是根据InitializeComponent()这个方法来的。

所以,如果把DropDownList的事件注册,放到ItemDataBound方法里面,页面一个PostBack,事件马上丢失。 但是,如果把DropDownList的事件注册,放到ItemCreated方法里面,即使页面PostBack,事件也不会丢失, 因为Page_Load之前,重新调用了这个ItemCreated方法,这个方法是不受IsPostBack的限制的。

至此,这个问题就很清楚了。

但是,由于每次页面PostBack,都要执行ItemCreated方法,那么肯定会对效率有所影响。所以,我们能不能给出另外一种解决方法呢。戏子这个JR就提出,可以在编辑期间,就给这个DropDownList注册事件。 当然,在Grid模板列里面,点击这个DropDownList没有事件的那个闪电符号可以选择,但是我们可以改他的HTML

<asp:DropDownList id=”DropDownList2″ runat=”server” OnSelectedIndexChange=”ddl_SelectedIndexChanged”></asp:DropDownList>

这样,我们就不用动态的给这个DropDonwList注册事件了 我们仅仅需要在ItemDataBound方法里面来绑定它的数据就可以了 ps:不要忘了把ddl_SelectedIndexChanged这个方法设置为protected

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月11日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DataGrid1_ItemDataBound[通俗易懂]
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Microsoft.ApplicationBlocks.Data;
全栈程序员站长
2022/11/04
6220
常见 Datagrid 错误
Datagrid 控件是 Microsoft® ASP.NET 中功能最强、用途最广的 Web 控件之一,这一点已经得到了 ASP.NET 权威人士的认同。虽然 Datagrid 控件易于使用,但同样易于给使用者带来麻烦。以下是许多人所犯的一些错误,这些人包括从初学者到富有经验的 .NET 专家。您可以看到许多苦闷的使用者在 ASP.NET 新闻组和论坛就这些错误提出问题。遵循本文概述的相当简单的步骤,可以帮助您避免这些错误,并节约大量的开发时间。
Java架构师必看
2021/03/22
2.4K0
ASP.NET设计应用程序的七大绝招
随着微软.NET的流行,ASP.NET越来越为广大开发人员所接受。作为ASP.NET的开发人员,我们不仅需要掌握其基本的原理,更要多多实践,从实践中获取真正的开发本领。在我们的实际开发中,往往基本的原理满足不了开发需求,我们更多的要积累一些开发技巧,本文就向大家介绍一些实用技巧,希望对大家的开发有所裨益。
Java架构师必看
2021/03/22
7100
asp:DropDownList 的一些属性
使用 BorderStyle 属性为 Web 服务器控件指定边框样式。 使用一个 BorderStyle 枚举值设置此属性。 下表列出了可能的值。
全栈程序员站长
2022/11/02
4870
dropdown和dropdownlist_list的clear方法
1、通常的做法是: ①添加ddl_Province、ddl_City ②对ddl_Province进行数据绑定 ddl_Province..DataSource = dt; ddl_Province.DataTextField = “ProvinceName”; ddl_Province.DataValueField = “ProvinceCode”; ③设置ddl_Province的AutoPostBack=”True” OnSelectedIndexChanged=”ddl_City_SelectedIndexChanged” ④在ddl_Province的OnSelectedIndexChanged事件对应的方法中根据ddl_Province的当前值对ddl_City进行绑定
全栈程序员站长
2022/10/03
7570
EnableEventValidation错误原因分析以及解决办法
回发或回调参数无效。在配置中使用 <pages enableEventValidation=”true”/> 或在页面中使用 <%@ Page EnableEventValidation=”true” %> 启用了事件验证
全栈程序员站长
2022/09/06
2.1K0
避免到服务器的不必要的往返过程
虽然您很可能希望尽量多地使用 Web 窗体页框架的那些节省时间和代码的功能,但在某些情况下却不宜使用 ASP.NET 服务器控件和回发事件处理。
Java架构师必看
2021/03/22
6580
DataGrid中DropDownList的动态绑定和触发DropDownList事件[通俗易懂]
我在写DataGrid控件中子控件事件时候,DropDownList的事件相比而言麻烦一点,在此,我简单罗列如下(我在此处为了方便这里都用DataGrid中的隐藏列存储我所要的数据):
全栈程序员站长
2022/10/01
1.1K0
DropDownList 详解「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。DropDownList 控件用于创建下拉列表。DropDownList 控件中的每个可选项都是由 ListItem 元素定义的! 提示:该控件支持数据绑定! DropDownList 控件是一个下拉式的选单,功能和 RadioButtonList Web控件很类似,提供用户在一群选项中选择一个;不过RadioButtonList Web控件适合使用在较少量的选项群组项目,而DropDownList Web 控件则适合用来管理大量的选项群组项目。
全栈程序员站长
2022/09/09
2.9K0
asp.net中显示DataGrid控件列序号的几种方法
在aps.net中多数据绑定的控件很多,论功能来说,应该属DataGrid最为齐全,但它没有提供现成的显示记录序号的功能,不过我们可以通过它所带的一些参数来间接得到序号,下面来看看怎样得到和显示序号值计算方式如下:
Java架构师必看
2021/03/22
1.6K0
dropdownlist控件绑定数据库_凡科可以绑定数据库吗
DropDownList1.DataSource=myReader;//myReader为ExecuteReader()的结果集 DropDownList1.DataTextField(DataValueField) = “填充在myReader中的数据集,用哪个列填充就写哪个列名就ok 了”; DropDownList1.DataBind();
全栈程序员站长
2022/11/10
9830
给DataGrid添加确定删除的功能
给DataGrid添加确定删除的功能 DataGrid的功能我想大家是知道的,我在实际的应用中遇到如下的问题,客户要求在删除之前做一次提示。类
Java架构师必看
2021/03/22
9340
DataBind数据核心
这一节主要是要讲DataBind,这个在ASP.net中是很重要的东东,几乎所有的控件都需要它来控制数据的操作。也可以说是ASP.net的数据核心。 我们先来看一个简单的例子:
Java架构师必看
2020/10/23
6620
使用DataGrid动态绑定DropDownList
简单的使用模板列绑定DropDownList,初学者想必都会了,但有时候,我们要做的就是在编辑的时候数据库
Java架构师必看
2020/07/21
8650
checkbox选中触发事件_jquery select change事件
<asp:DataGrid id=”DataGrid1″ runat=”server” AutoGenerateColumns=”False”> <Columns> <asp:BoundColumn DataField=”txtId”></asp:BoundColumn> <asp:BoundColumn DataField=”txtName”></asp:BoundColumn> <asp:TemplateColumn> <ItemTemplate> <asp:ImageButton id=”btnItem” runat=”server” CommandName=”LookDetail”></asp:ImageButton> <asp:DropDownList id=”ddl” runat=”server” AutoPostBack=”True”> <asp:ListItem Value=”asdf”>asdf</asp:ListItem> <asp:ListItem Value=”asdfasdf”>asdfasdf</asp:ListItem> <asp:ListItem Value=”wrwwewewee”>wrwwewewee</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateColumn> </Columns> </asp:DataGrid>
全栈程序员站长
2022/10/01
4.2K0
Asp.net页面生命周期
前言                                      本篇记录的是Asp.net页面生命周期,也就是管道模型的最末端HttpHandler的生命周期。(Page继承了IHttpHandler接口。想了解管道模型,请参考asp.net管道模型(管线模型)之一发不可收拾)。如有不足请大家指出^_^!!  本篇主要参考:ASP.NET编程模型之页面生命周期十一步详解 ASP.NET编程模型之ASP.NET页面生命周期图解        《亮剑.net 深入体验与实战精要》 正文    
^_^肥仔John
2018/01/18
2.4K0
System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation=”true”/>
大家好,又见面了,我是你们的朋友全栈君。关于在同一个页面中使用Gridview控件的时候发现气updaeting事件无法被服务器所响应,看来它的错误报警然后查询了部分资料现在将整理的解决方法总结如下:点击update 事件无法响应原因出在回发或回调参数无效。在配置中使用 <pages enableEventValidation=”true”/> 或在页面中使用 <%@ Page EnableEventValidation=”true” %> 启用了事件验证。出于安全目的,此功能验证回发或回 调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation=”true”/> 或在页面中使用 <% @ Page EnableEventValidation=”true” %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数 是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
全栈程序员站长
2022/09/15
1.4K0
ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页
出自: http://blog.csdn.net/yzx110/archive/2004/08/18/78525.aspx
Java架构师必看
2021/03/22
9420
DropDownList绑定数据库「建议收藏」
//获取文本 this.DropDownList1.SelectedItem.Text;
全栈程序员站长
2022/11/08
6390
C#进阶-ASP.NET常用控件总结
ASP.NET Panel 控件用于将一组控件组织在一起,并可以通过控件的 Visible 属性来控制它们的可见性。
Damon小智
2024/03/15
1660
C#进阶-ASP.NET常用控件总结
推荐阅读
相关推荐
DataGrid1_ItemDataBound[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文