zoukankan      html  css  js  c++  java
  • 自定函数获取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)
    {
     
    }
    2.遍历DataGrid中的所有Item.DataGrid.Controls[0]一般来说为生成的Table.
    foreach (DataGridItem item in myGrid.Controls[0].Controls)
             {
                 
    if(item.ItemType==ListItemType.Footer)
              {
                              //用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);
            }
  • 相关阅读:
    OpenCV 使用FLANN进行特征点匹配
    OpenCV 特征描述
    OpenCV 特征点检测
    OpenCV 亚像素级的角点检测
    OpenCV Shi-Tomasi角点检测子
    OpenCV Harris 角点检测子
    OpenCV 模板匹配
    OpenCV 直方图计算
    OpenCV 直方图均衡化
    OpenCV 仿射变换
  • 原文地址:https://www.cnblogs.com/symbol441/p/981962.html
Copyright © 2011-2022 走看看