自定函数获取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,一经查实,立即删除!

相关文章

如何做好一名软件实施人员 (转载)

通过一年的软件实施&#xff0c;使我深深的感觉到&#xff0c;软件实施&#xff0c;其实并不是一件很容易的事&#xff0c;也许可算是一项挑战&#xff0c;很需要“明知山有虎&#xff0c;偏向虎山行”的信心和勇气。为什么这样说呢&#xff1f; 因为&#xff0c;软件实施可以说…

hdu 5802——Windows 10

题意&#xff1a;给定两个音量&#xff0c;需要从l调到r&#xff0c;每次只能向上一下或者向下&#xff08;1&#xff0c;2&#xff0c;4&#xff0c;2^n&#xff09;下&#xff08;连续向下的情况下&#xff09;&#xff0c;每次可以停歇或向上来打断向下的连续性&#xff0c;…

20160807_第一周周报

写在前面 以后每周周日要进行一次周报&#xff0c;内容长短不限&#xff0c;为这一周的知识点和心态方面的总结&#xff0c;还有就是对未来的相关规划和调节&#xff01;知识点方面 在知识点方面进度不是太大&#xff0c;打的还是一般化的套路&#xff0c;在这个周的前几天的…

微软认证题库

微软认证题库 70-320XML Web Service开发for C#模拟题实用软件工程方法题库MCP 70-300&#xff1a;基于.NET的需求分析和解决方案设计认证题库三个认证题库点击直接下载posted on 2007-12-12 22:32 当当 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/hyzhi/a…

hdu 5783——Divide the Sequence

题意及思路&#xff1a; 求一个序列的分段个数&#xff0c;使得每一段的前缀和为0&#xff0c;如果正向思维&#xff0c;那么解法是从前往后遍历&#xff0c;每遇到一个负数就向前遍历直到>0&#xff08;这样贪心保证了序列尽可能多&#xff09;,但是这样最坏的情况是n^2的…

IE7快捷键

快捷方式 常规 打开或关闭全屏模式F11移动选择网页上的地址栏、“刷新”按钮、搜索框和项目Tab查找页面上的字词或短语CtrlF在新窗口中打开当前网页CtrlN打印页面CtrlP选择页面上的所有项目CtrlA放大Ctrl加号缩小Ctrl减号缩放到 100%Ctrl0导航快捷方式 转至主页 AltHome后退Alt…

BestCoder Round #86 1002 HDU 5805 ——NanoApe Loves Sequence

题意 给定一个数列&#xff0c;随机从该数列里删除一个数&#xff0c;求该数列的的相邻之间的绝对值的最大值的和。 思路 两个数列来分别维护i位前面的相邻的绝对值的最大以及i后面的最大&#xff0c;枚举每一个可能删除的数&#xff0c;然后分别从左右和要删除的这个空档里…

BestCoder Round #86 1003 HDU 5806——NanoApe Loves Sequence Ⅱ

题意&#xff1a; 给定一个序列&#xff0c;问在这个序列里有多少区间第k的的数>m 思路&#xff1a; 在比赛的时候是多想了&#xff0c;开始像区间第k大的问题&#xff0c;赛后想想实在是偏了。 正确的解法是枚举起点然后用尺取法维护一段区间&#xff0c;直到找到k个数…

Could not load the assembly 'DotNetNuke.Authentication.LiveID'. Make sure that it is compiled before

今天发生一个莫名的错误&#xff1a;Could not load the assembly DotNetNuke.Authentication.LiveID. Make sure that it is compiled before&#xff0c;在网上找了下有如下的解释&#xff1a; My understanding and perhaps a core member would be willing to correct me i…

详细讲解Java中log4j的使用方法

详细讲解Java中log4j的使用方法 作者: 网络 来源: 日期: 2008-1-3 23:40:24 1、Log4j是什么&#xff1f; Log4j可以帮助调试&#xff08;有时候debug是发挥不了作 用的&#xff09;和分析&#xff0c;要下载和了解更具体的内容&#xff0c;还是访问其官方网站吧&#xff1a; ht…

HDU 1402——A * B Problem Plus

题意&#xff1a; 给定a&#xff0c;b&#xff0c;求a*b。 思路&#xff1a; a,b的长度都为50000&#xff0c;直接模拟计算n*m肯定超时&#xff0c;可以用快速傅里叶变化计算&#xff0c;然后再把相应的系数化简出来。 code&#xff1a; #include <iostream> #inclu…

随机广告图片

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…

HDU 4609——3-idiots

题意&#xff1a; 给定n个数&#xff0c;随机从这n个数中取3个数&#xff0c;问能组成三角形的概率是多少&#xff1f; 思路&#xff1a; 首先把统计这n个数出现的个数&#xff0c;那么会得到一个向量&#xff0c;这个向量的自我的乘积就是a[i]a[j]的可能的方案数&#xff0…

HDU 5730——Shell Necklace

题意&#xff1a; 一段长为i的项链有a[i]中装饰方法&#xff0c;问长度为n的项链有多少种装饰方式。 思路&#xff1a; 容易推出&#xff0c;dp[i]∑dp[j]*a[i-j],(1<j<i-1)那么这样就刚好符合卷积的运算&#xff0c;这样就可以愉快地使用fft了&#xff0c;不过数量级…

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…

flash调用js中的方法,让js传递变量给flash (兼容 IE FF) (转)

前几天发表了 将FlashVars写在JS函数中&#xff0c;实现与后台的实时变量更新&#xff0c;但是仅支持 IE&#xff0c;随后与 Luckyer 进行了交流&#xff0c;发现用 SetVariable 可以很方便的实现多浏览器兼容。举例如下。html 页中的 JavaScript 函数&#xff1a;function Get…

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

经典算法研究系列&#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…

UVA 12298——Super Poker II

题意&#xff1a; 给定一些扑克牌&#xff0c;问这些扑克牌选四色能组成n的方案数&#xff0c;其中遗失了c张牌&#xff0c;这c张不能用&#xff0c;问n从a到b的方案数。 思路&#xff1a; 分析每一种花色&#xff0c;那么每种花色组成的方案数即为x^1x^2x^3x^5&#xff08;…