自定函数获取datagrid,datalist,rpeater控件中header,footer栏中控件

在论坛上看到很多关于datagrid,gridview,datalist,rpeater提取header,footer中控件的问题,整理了一下.供大家分享
下面我以DataGrid为便进行说明.
footer栏又称页脚栏,在很多时候我们可以在该栏放页码及相当的功能键.但是最后在获得这些控件引用的时候就会有点麻烦,由于footer(页脚),header(页眉)都不在DataGrid.Items属性中,该属性返回的集合只包含数据绑定生成的item,所以必须用其他方法来做.下面是我从csdn和其他地方总结而来的几种方法:
1.在ItemCreated或者ItemDataBound中对其控件进行查找;
if (e.Item.ItemType == ListItemType.Footer)
ExpandedBlockStart.gif
{
 
}
2.遍历DataGrid中的所有Item.DataGrid.Controls[0]一般来说为生成的Table.
foreach (DataGridItem item in myGrid.Controls[0].Controls)
ExpandedBlockStart.gifContractedBlock.gif         {
             
if(item.ItemType==ListItemType.Footer)
ExpandedSubBlockStart.gifContractedSubBlock.gif          {
                          //用Item.FindControl查找相应的控件
                              }

         }

前面两种方法大家都经常用,这里再列出以前在csdn上看到的思归大哥提出的另外两种方法。
3.Table t=(Table)DataGrid.Controls[0];
//如果你有Pager的话,那么你需要这样编码T.Rows[T.Rows.Count-2]去获得Pager
DataGridItem item=(DataGridItem)t.Rows[t.Rows.Count-1];
//该item就是Footer,此时你就可以用FindControl查找了。
下面为一个完整的demo

前台页;

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SearchHeaderAndFooterControl.aspx.cs"
    Inherits
="SearchHeaderAndFooterControl" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>F</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:DataGrid runat="server" ID="gvUserView" DataSourceID="ldsUserData" ShowFooter="True"
            AllowCustomPaging
="True" AllowPaging="True" 
            onitemdatabound
="gvUserView_ItemDataBound">
            
<Columns>
                
<asp:TemplateColumn>
                    
<HeaderTemplate>
                        
<asp:TextBox runat="server" ID="txtHeaderInfo" Text="this is header textbox value!"></asp:TextBox>
                    
</HeaderTemplate>
                
</asp:TemplateColumn>
                
<asp:TemplateColumn>
                    
<FooterTemplate>
                        
<asp:TextBox runat="server" ID="txtFooterInfo" Text="this is footer textbox value!"></asp:TextBox>
                    
</FooterTemplate>
                
</asp:TemplateColumn>
            
</Columns>
        
</asp:DataGrid>
        
<asp:LinqDataSource ID="ldsUserData" runat="server" ContextTypeName="DataClassesDataContext"
            TableName
="Customers">
        
</asp:LinqDataSource>
        
<br />
        
<asp:Button ID="btnGetFooterControlValue" runat="server" Text="获取footer控件" OnClick="btnGetFooterControlValue_Click" />
        
<asp:Button ID="btnGetHeaderControlValue" runat="server"
            Text
="获取header控件" onclick="btnGetHeaderControlValue_Click" />
    
</div>
    
</form>
</body>
</html>


后台页;

 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class SearchHeaderAndFooterControl : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    {

    }

    
protected void btnGetFooterControlValue_Click(object sender, EventArgs e)
    {
        
#region 方法1
        
//foreach (DataGridItem item in gvUserView.Controls[0].Controls)
        
//{

        
//    if (item.ItemType == ListItemType.Footer)
        
//    {
        
//        TextBox txtFooter = item.FindControl("txtFooterInfo") as TextBox;
        
//        ShowMessage(txtFooter.Text);
        
//        break;

        
//    }
        
//}
        #endregion

        
#region 方法2
        
//Table clientTable = gvUserView.Controls[0] as Table;
        
//DataGridItem item = (DataGridItem)clientTable.Rows[clientTable.Rows.Count - 2];

        
//TextBox txtFooter = item.FindControl("txtFooterInfo") as TextBox;
        
//ShowMessage(txtFooter.Text);
        #endregion

        


    }

    
private void ShowMessage(string str)
    {
        
string notifyInfo = string.Format("alert('{0}');", str);
        Page.ClientScript.RegisterClientScriptBlock(GetType(), 
"", notifyInfo, true);
    }

    
protected void btnGetHeaderControlValue_Click(object sender, EventArgs e)
    {
        
foreach (DataGridItem item in gvUserView.Controls[0].Controls)
        {

            
if (item.ItemType == ListItemType.Header)
            {
                TextBox txtHeader 
= item.FindControl("txtHeaderInfo"as TextBox;
                ShowMessage(txtHeader.Text);
                
break;
            }
        }

    }

    
protected void gvUserView_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        
if (e.Item.ItemType == ListItemType.Header)
        {
            TextBox txtHeader 
= e.Item.FindControl("txtHeaderInfo"as TextBox;
            ShowMessage(txtHeader.Text);

        }
        
//if (e.Item.ItemType == ListItemType.Footer)
        
//{
        
//    TextBox txtFooter = e.Item.FindControl("txtFooterInfo") as TextBox;
        
//    ShowMessage(txtFooter.Text);

        
//}
    }
}

 

如果控件为GridView,则进行简单变换即可使用

 

if (e.Row.RowType == DataControlRowType.Header)
        {
            TextBox txtHeader 
= e.Row.FindControl("txtHeaderInfo"as TextBox;
            ShowMessage(txtHeader.Text);

        }
        
//if (e.Row.RowType == DataControlRowType.Footer)
        
//{
        
//    TextBox txtFooter = e.Item.FindControl("txtFooterInfo") as TextBox;
        
//    ShowMessage(txtFooter.Text);

        
//}

DataList,Repeater也是同理

 //if (e.Item.ItemType == ListItemType.Header)
        
//{

        
//}
        if (e.Item.ItemType == ListItemType.Footer)
        {
            TextBox txtFooter 
= e.Item.FindControl("txtFooterInfo"as TextBox;
            
//TextBox txtFooter = e.Item.Controls[1] as TextBox;
            ShowMessage(txtFooter.Text);
        }

 

转载于:https://www.cnblogs.com/symbol441/archive/2007/12/04/981962.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随机广告图片

1<script language”JavaScript”>2var imageList newArray;3imageList[0] “image1.jpg”;4imageList[1] “image2.jpg”;5imageList[2] “image3.jpg”;6imageList[3] “image4.jpg”;7var urlList newArray;8urlList[0] “http://some.host/”;9urlList[1] “http://a…

Core IO学习心得

最近看Core IO的内容&#xff0c;有一些心得给大家共享一下&#xff1a; Core IO作为微软IT基础架构优化框架中的一个部分。该框架包含三个部分&#xff1a;CIO&#xff0c;BPIO和APIO&#xff1a; CIO&#xff08;核心基础架构优化&#xff09;专注于核心基础机构组件&#x…

经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上

经典算法研究系列&#xff1a;十、从头到尾彻底理解傅里叶变换算法、上 作者&#xff1a;July、dznlong 二零一一年二月二十日 推荐阅读&#xff1a;The Scientist and Engineers Guide to Digital Signal Processing&#xff0c;By Steven W. Smith, Ph.D。此书地址&#xf…

经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、下

经典算法研究系列&#xff1a;十、从头到尾彻底理解傅里叶变换算法、下 作者&#xff1a;July、dznlong 二零一一年二月二十二日 推荐阅读&#xff1a;The Scientist and Engineers Guide to Digital Signal Processing&#xff0c;By Steven W. Smith, Ph.D。此书地址&#…

调出sharepoint错误的详细页面

记录一个小技巧&#xff1a; 在开发sharepoint的时候经常出现" An unexpected error has occurred."的页面&#xff0c;让人非常的郁闷。 打开web.config, 找到&#xff1a; <SafeMode MaxControls"200" CallStack"false" DirectFileDepende…

职业生涯中12个最致命的想法

1、总觉得自己不够好  这种人虽然聪明、有历练&#xff0c;但是一旦被提拔&#xff0c;反而毫无自信&#xff0c;觉得自己不胜任。4、无条件地回避冲突  这种人一般会不惜一切代价&#xff0c;避免冲突。一位本来应当为部属据理力争的主管&#xff0c;为了回避冲突&#xf…

树链剖分入门讲解

“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决&#xff0c;实际上&#xff0c;仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链&#xff0c;就是树上的路径。剖分&#xff0c;就是把路径分类为重链和轻链。 记…

选择模块数据读取

1if(Bname"")2{ 3 Response.Write("<script languagejavascript>alert(错误的链接地址&#xff01;);history.go(-1);</script>"); 4 Response.End(); 5 }6if(Bid106&&Sid!0)7{ 8 //<!-- 标准法规--> 9 if(Sid127…

Terrafugia希望在今年夏天带来真正可飞的Airplane

Terrafugia希望在今年夏天带来真正可飞的Airplane 大家都知道&#xff0c;Terrafugia的汽车飞机混合机种&#xff0c;他是是辆双座的汽车&#xff0c;拥有100-500英里的速度范围&#xff0c;一个独立的无铅汽油储备箱&#xff0c;同时配置有电子计算机&#xff0c;用来在空中飞…

四川汶川地震祈福赈灾宣传画、报纸头版精选第二版(超多图)

本篇Key词&#xff1a; 汶川地震祈福图片汶川地震祈福壁纸四川汶川地震祈福赈灾宣传画 四川汶川地震祈福赈灾宣传画 天使 不要害怕&#xff0c;手牵手渡过难关 孩子不哭 生命奇迹 从废墟中站起来 祝福灾区人民 众志成城&#xff0c;抗震救灾 众志成城&#xff0c;抗震救灾2 众…

2016年湖南省第十二届大学生计算机程序设计竞赛

题目&#xff1a; 任意门 听说这套题目是叉姐出的&#xff0c;感觉呵呵了。。。 据说现场牌都不够发的&#xff01;&#xff01;&#xff01;只能说给湖南省出的题目太强了&#xff0c;不适合新手去做&#xff0c;当然我这种老手也不见得做的多好&#xff0c;出了3题&#xf…

控件中的Events个人理解。

首先&#xff0c;了解一下与事件和委托有关的几个类和属性&#xff1a;Delegate, MulticastDelegate, EventHandler, EventHandlerList, EventHandlerList.ListEntry, Control, ComponentControl的Events属性是由System.ComponentModel.Component 继承而来,它是EventHandlerLis…

ManualResetEvent用法

ManualResetEvent 允许线程通过发信号互相通信。通常&#xff0c;此通信涉及一个线程在其他线程进行之前必须完成的任务。 public static ManualResetEvent mre new ManualResetEvent(false); ManualResetEvent建立时是把false作为start的初始状态&#xff0c;这个类用于通知另…

JavaScript: Cookie 详解、实例与应用

Cookie&#xff08;也&#xff09;是JavaScript中的一种机制&#xff0c;可以实现严格的跨页面全局变量的要求。 Cookie是存于用户硬盘的一个文件&#xff0c;这个文件通常对应于一个域名&#xff0c;当浏览器再次访问这个域名时&#xff0c;便使这个cookie可用。因此&#xff…

苹果电脑可以装windows系统吗_不只是桌面,这个 Windows 皮肤可以帮你全局美化 Windows 系统

追求个性化是个永恒不变的需求&#xff0c;而在主题这件事情上&#xff0c;和 Windows XP 那个百花齐放的时代相比&#xff0c;我们在 Windows 10 下能够享受到的官方主题大多都只是换换壁纸、改改配色这么简单。而在千篇一律的官方主题之外&#xff0c;美化社区的 Windows 10 …

SQL Server 2005: 存储过程签名

SQLSERVER 2005提供的对存储过程签名(signature)功能是我最喜欢的。如果我们要编写一个存储过程,执行该存储过程里的代码需要权限P,并且我们想要用户Alice可以执行这个存储过程&#xff0c;但是我们不想将权限P直接赋予给用户Alice&#xff0c; 我们可以用证书(certificate)对这…

手机能上wifi电脑不行_锦囊在此(电脑手机如何配置使用WIFI)

1.路由器接入电源(以下是以TP-LINK为例&#xff0c;其他路由器大同小异&#xff0c;重要是在于关闭DHCP服务器选项)2.打开电脑WIFI连接路由器(找对路由器名称&#xff0c;见路由器底标)(建议不要接入网线&#xff0c;配置好再接入网线)3.打开浏览器输入路由器后台网址(见路由器…

8位可控加减法电路设计_100以内数的认知也加减法详解

一、100 以内数的认识1、10个十是100,读作一百。100 是由10个十或100个一组成,它是一个三位数。2、数数时,可以一个一个的数,也可以二个二个的数,五个五个的数,十个十个的数。3、从右边起,第一位是个位,第二位是十位,第三位是百位。4、读数和写数,都从高位起。当计数器上个位或…

如何在电脑上截屏_如何在电脑上截图?教你6种常用的截图方法,总有你不知道的...

无论是在学习上还是在工作中&#xff0c;我们都经常会用到电脑&#xff0c;特别是在工作中&#xff0c;每天都是与电脑相伴&#xff0c;遇到重要的文字信息或者好看的图片&#xff0c;都会想尽办法截取下来&#xff0c;所以今天就教大家几种电脑截图的方法。1、截图工具这个截图…

ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

第三章 为控件添加事件 好了&#xff0c;我们之前以前开发一个控件。而且也添加了属性&#xff0c;开发也很规范&#xff0c;但是那个控件还差最后一点&#xff1a;添加事件。 系列文章链接:ASP.NET自定义控件组件开发 第一章 待续ASP.NET自定义控件组件开发 第一章 …