[ASP.NET]DataList中获取FooterTemplate中控件的研究

今天在做DEMO的时候发现用普通的DataList.FindControl(String id)方法无法找到FooterTemplate中的控件。

Code
 1//页面上尾部模板代码,一个按键 一个上传控件
 2<asp:DataList ID="DataList1" runat="server" 
 3            RepeatColumns="2" BackColor="#CCCCCC" BorderColor="#999999" 
 4            BorderStyle="Solid" BorderWidth="3px" CellPadding="4" CellSpacing="2" 
 5            ForeColor="Black" GridLines="Both" 
 6            onselectedindexchanged="DataList1_SelectedIndexChanged" 
 7            style="margin-right: 275px" onitemcommand="DataList1_ItemCommand">
 8<%--
 9当中的代码略过。。。
10--%>
11
12    <FooterTemplate>
13            <asp:Button ID="Button2" runat="server" Text="Add" onclick="Button2_Click" CommandArgument="aaa"/>
14            <asp:FileUpload ID="FileUpload1" runat="server" />
15        </FooterTemplate>
16</asp:DataList>
17
18//后台代码 用Button2_Click事件!
19这里前2种方法,都无法找到FileUpload1
20
21        protected void Button2_Click(object sender, EventArgs e)
22        {
23            FileUpload fu;
24            //方法1,遍历所有ITEM
25            foreach (DataListItem dli in DataList1.Items)
26            {
27                if (dli.ItemType == ListItemType.Footer)
28                {
29                    //DataList1.FooterTemplate
30                    fu = dli.FindControl("FileUpload1"as FileUpload;
31                    if (fu != null)
32                    {
33         responce.Write("OK!!Get it!");
34                    }

35                }

36            }

37            //方法2,FindControl方法查询
38      fu = DataList1.FindControl("FileUpload1"as FileUpload;
39            if (fu != null)
40            {
41                 responce.Write("OK!!Get it!");
42            }

43        }

44
45//第三种方法才算成功了,在DataList1中加入事件DataList1_ItemCommand,在这里遍历所有ITEM控件才找到的
46    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
47        {
48            if (e.CommandArgument.ToString() == "aaa")
49            {
50                foreach (Control c in e.Item.Controls)
51                {
52                    FileUpload fu = c as FileUpload;
53                    if (fu != null)
54                    {
55                         responce.Write("OK!!Get it!");
56                    }

57                }

58            }

59        }
用最简单的方法 responce.Write 我遍历打印了所有的控件,发现
方法1 只会遍历出ItemTemplate,System.Web.UI.WebControls.DataListItem
方法2 和方法1一样Controls都是ItemTemplate中的
方法3 能得到DataList中包括 Header和Footer在内的所有Control对象 再通过一个转化就能取到了

结论:

        在DataList中的ItemCommand事件才能遍历到,模板HeadeTemplater和FooterTemplate中的控件对象,并取数据或者做其他操作。

     如果有那位高人通过其他方式同样取到模板HeadeTemplater和FooterTemplate中的控件对象的话,请赐教啊贴下 互相学习学习!!

转载于:https://www.cnblogs.com/jimmypony/archive/2008/03/19/1113359.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值