[习题]如何触发
GridView 身体里面的「子控件」的事件?#1 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)

這個範例是要補充書本「上集」(ASP.NET專題實務)

Ch.
10~Ch.11 都是講解 GridView的進階應用。

上述兩章的難度偏高(其他入門書很難見到這種內容!),

但您一旦學通了,各種「大型」控制項的運作原理也都會貫通。

另外,您也需要複習一下
.FindControl()方法
,專門用來抓取「大型控制項」身體裡面的  子控制項!

===================================================

我們先來看看這個範例 test_01_error.aspx

(1).  要在
GridView身體裡面,放置新的「子控制項」。

您必須先把
GridView的欄位,變成「樣版(Template)」

然後動手加入。

這部分是很基礎的操作,如果您不會的話,真的要買書從頭學起了!

===================================================

(2). 
完成之後,我們想要這樣做:

Q :  當使用者點選 GridView身體裡面的「子控制項
(DropDownList)」,

我們希望能觸發
DropDownList對應的事件、甚至抓到使用者點選了DropDownList哪一個選項....?

您一定覺得很簡單,對吧?

跳到 VB的後置程式碼,您可以發現您無法挑選 "GridView身體裡面的「子控制項」"的事件

怎麼辦?

使用 C#的人可能不會有這個困擾。

這涉及 VB的事件會使用到 Handles

C#則是在 HTML畫面原始檔裡面,把方法寫在控制項裡面了。例如:
Onclick="Button1_click"

您最好看看書本「上集」(ASP.NET專題實務)的第三章
Ch.
3-4節

在 Button控制項的
Command那一節,我有詳細說明這件事。

===================================================

(3). 
以VB程式碼為例,我們的HTML設計畫面的原始檔,需修正如下:

01         <asp:gridview autogeneratecolumns="False" datakeynames="id" datasourceid="SqlDataSource1" id="GridView1" runat="server">
02             <columns>
03                 <asp:boundfield datafield="id" headertext="id" insertvisible="False" readonly="True" sortexpression="id">
04                 <asp:templatefield headertext="name" sortexpression="name">
05                     <edititemtemplate>
06                         <asp:textbox id="TextBox1" runat="server" text="<%# Bind("name") %>">
07                     </asp:textbox>
08                     <itemtemplate>
09                         <asp:label id="Label1" runat="server" text="<%# Bind("name") %>">
10  
11                         <asp:dropdownlist autopostback="true" id="DropDownList1" onselectedindexchanged="DropDownList1_SelectedIndexChanged" runat="server">
12                             <asp:listitem selected="True">yes</asp:listitem>
13                             <asp:listitem>No</asp:listitem>
14  
15                         </asp:dropdownlist>
16                         <asp:button id="Button1" onclick="Button1_Click" runat="server" text="Button">
17                     </asp:button>
18                 </asp:label>
19                 <asp:boundfield datafield="student_id" headertext="student_id" sortexpression="student_id">
20                 <asp:boundfield datafield="city" headertext="city" sortexpression="city">
21                 <asp:boundfield datafield="chinese" headertext="chinese" sortexpression="chinese">
22                 <asp:boundfield datafield="math" headertext="math" sortexpression="math">
23             </asp:boundfield>
24         </asp:boundfield>
25  
26  
27         <asp:sqldatasource connectionstring="<%$
ConnectionStrings:testConnectionString %>" id="SqlDataSource1"
runat="server" selectcommand="SELECT * FROM [student_test]">
28     </asp:sqldatasource></asp:boundfield></asp:boundfield></itemtemplate></edititemtemplate></asp:templatefield>
29 </asp:boundfield></columns></asp:gridview>

重點修改如下(這是採用VB語法)
                        <asp:DropDownList ID="DropDownList1"
runat="server" AutoPostBack="true"                            
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">

<asp:ListItem
Selected="True">yes</asp:ListItem>                         
<asp:ListItem>No</asp:ListItem>
                       
</asp:DropDownList>

<asp:Button
ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"
/>

VB的後置程式碼,需修正如下:

view source print?
01     Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As System.EventArgs)
02         Response.Write("DropDownList1_SelectedIndexChanged
03 ")
04     End Sub
05  
06  
07     Protected Sub Button1_Click(sender As Object, e As System.EventArgs)
08         '=======================
09         Dim my_DDL As New DropDownList
10         my_DDL = GridView1.Rows(GridView1.SelectedIndex).FindControl("DropDownList1")
11         '==== 這兩列程式碼會出錯!==========
12  
13         Response.Write("Button1_Click
14 ")
15  
16         If my_DDL.SelectedIndex >= 0 Then
17             Response.Write("OK~~OK~~
18 ")
19         End If
20     End Sub

您可以發現:上面的VB後置程式碼,每一個事件後面的
Handles不見了。

這是為了配合 HTML設計畫面的修改。

使用 C#的朋友會覺得習以為常,但用慣 VB的朋友會不太習慣。

===================================================

最後......執行的成果還是有誤差,不令人滿意.......

當您按下任何一個 Button會出現這樣的錯誤,

簡單的說,
您按下 Button的時候,程式無法判斷您是「按下
GridView的哪一列」??  下面的錯誤訊息講得很清楚。

該怎麼修正呢?

我們打開書本「上集」(ASP.NET專題實務)

Ch.
10~Ch.11 都是講解 GridView的進階應用。

重新複習一下,當使用者按下
「GridView的某一列」時,我們都是怎麼來判斷的呢?

答案有很多.....

[习题]如何触发 GridView 身体里面的「子控件」的事件?#2 范例下载
(ASP.NET案例精编/清华大学出版社 Ch.10/11两章的补充)

http://www.dotblogs.com.tw/mis2000lab/archive/2011/03/11/gridview_inside_web_control_event_02.aspx

[习题]如何触发
GridView 身体里面的「子控件」的事件?#3 改良版

http://www.dotblogs.com.tw/mis2000lab/archive/2011/03/16/gridview_inside_web_control_event_03.aspx

转载于:https://www.cnblogs.com/mis2000lab/archive/2011/03/23/1992691.html

[习题]如何触发 GridView 身体里面的「子控件」的事件 (ASP.NET案例精编 / 清华大学出版社 Ch.10/11两章的补充)...相关推荐

  1. [习题].FindControl()方法 与 PlaceHolder控件 #2(动态加入「子控件」的事件)

    这是我的文章备份,有空请到我的网站走走, http://www.dotblogs.com.tw/mis2000lab/ 才能掌握我提供的第一手信息,谢谢您. http://www.dotblogs.c ...

  2. [给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉...

    这是我的文章备份,原文请看: [给ASP.NET 初学者的话]不要练功练了三年,才发现自己必须「砍掉重练」!....学习ASP.NET之前,请先把自己杯中的水倒掉 http://www.dotblog ...

  3. DropDownList ListBox GridView DataList Repeater FormView DetailsView 数据绑定控件详解

    asp.net夜话之八:数据绑定控件收藏               Author: 周金桥 Date: 2008-10-24 01:32 通过前面的例子我们看到每次我们要显示数据的时候都要通过一个循 ...

  4. 使用button触发FileUpload控件的click事件

    点击button触发FileUpload控件的click事件 通过点击button按钮触发FileUpload控件,避免因浏览器不同而导致FileUpload控件样式发生变化,影响页面效果. 注意:需 ...

  5. winform 鼠标离开子控件触发mouseleave事件处理

    Winform 控件鼠标离开事件 中 鼠标进入子控件也会触发mouseleave事件处理 最近在做一个关于语音与文本互相转化的小工具,利用的是百度的语音与文本转化接口.由于百度的语音转文本极速版接口中 ...

  6. 自动为DEV GridView控件添加SizeChanged事件

    实现gdv设置的抽象对象,不用每个gdv控件都添加sizechanged事件,只需执行gdc绑定sql函数,在其中会自动添加SizeChanged事件. //2016.5.13 by sngk //根 ...

  7. dev 点击子控件触发panelcontrol事件_LINUX IIO子系统分析之二 IIO子系统数据结构分析...

    上一章我们简要说明了IIO子系统的架构,本章我们通过数据结构的定义,分析IIO子系统的设计实现,本章的主要内容如下: 一.IIO子系统各数据结构说明 二.数据结构间的关联说明 一.IIO子系统各数据结 ...

  8. Gridview的footer模板中放置控件实现添加功能

    前台代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  9. 寻找GridView中模板列中的控件

    假如你在gridview中添加一个模板列,并 在模板列中存放了一个dropdownlist控件.那么,问题就是:你如何去操作这个dropdownlist控件???? //对于gridview控件:  ...

最新文章

  1. configure: error: no acceptable C compiler found in $PATH
  2. python 占位符_5分钟让你用Python作出最精美的Powerpoint
  3. mysql查询锁表语句和kill对应的线程
  4. 【原生JS插件】LoadingBar页面顶部加载进度条
  5. .NET Core 3中的性能提升(译文)
  6. vue2.0 如何自定义组件(vue组件的封装)
  7. c#结合emgucv进行人脸检测_Python实时人脸识别/替换
  8. 线序及模式配置Linux,[CCNA图文笔记]-1-水晶头线序及设备互联法则
  9. 自创数据集,使用TensorFlow预测股票入门(转)
  10. linux查看系统的版本信息失败,Linux - 查看系统的版本信息
  11. Mysql高手系列 - 第20篇:异常捕获及处理详解(实战经验)
  12. 28个极简代码——python
  13. PDF破解FileOpenPlugin加密的方法
  14. 拳王公社:虚拟资源项目赚钱方法?前2种最常见,第3种鲜为人知
  15. Arcgis实例操作9--空间分布趋势图、分割多部分要素、导出矢量数据的文本文件
  16. 专业思维导图软件 Mindjet MindManager 2021下载
  17. electron + fluent-ffmpeg推送桌面、音视频、窗口
  18. think php 导出excel,Thinkphp5导出excel
  19. 手机屏幕坏了怎么把数据导出来_苹果手机的语音备忘录怎么导出来?
  20. 电脑系统时间同步问题处理

热门文章

  1. MySQL LIKE 子句
  2. Linux知识框架梳理
  3. Apache 服务器的安全策略
  4. Shuffling Machine (20)
  5. qr分解求线性方程组_矩阵分解
  6. Linux下利用脚本全自动搭建论坛
  7. 傅里叶变换常用公式表_25个常用公式计算表+7套施工测量计算表,全自动计算,测量无压力...
  8. python运行界面黑色_selenium+python 去除启动的黑色cmd窗口方法
  9. 抽奖送福利|8大福利任性送,快来抽它
  10. 请允许我用2019年11种主流编程语言,祝祖国70华诞快乐!