• 关于FINDCONTROL()方法的一个研究


    今天要给repeater做上一个checkbox,然后能做到圈选反选,本来很简单的事,但是我发现了findcontrol方法的一个好的优点。
    前台绑定方法如下:
    <asp:Repeater ID="Repeater1" runat="server">
                    <ItemTemplate><asp:CheckBox ID="ch" runat="server" /></ItemTemplate>
                </asp:Repeater>
    后台代码如下:
    foreach (Control c in this.Repeater1.Controls)
            {
                CheckBox check = (CheckBox)c.FindControl("ch");
                if (check != null)
                {
                    check.Checked = true;
                }

            }
    好像细看没什么神奇,但是,从html代码中,你看到repeater生成的html代码如下:
    <INPUT id=Repeater1_ctl00_ch type=checkbox name=Repeater1$ctl00$ch>
    <INPUT id=Repeater1_ctl03_ch type=checkbox name=Repeater1$ctl03$ch>
    地球人都知道服务器端的id到了客户端就极有可能在asp.net生成控件树的时候被asp.net自动重命名,为的防止一个页面多个重复id,那为什么在回发的时候后台又能够通过findcontrol("ch")来获取到呢?这就是asp.net为我们作的工作了。
    顺便说说3种获得repeater中的checkbox 的方法:
    foreach( RepeaterItem item in this.Repeater1.Items )
    {
        HtmlInputCheckBox check = (HtmlInputCheckBox)item.FindControl("cbDelete1");
    if( check != null )
    {
         check.Checked = true;
        }
       }
    for (int i=0;i<this.Repeater1.Items.Count;i++)
    {
        HtmlInputCheckBox check = (HtmlInputCheckBox)this.Repeater1.Items[i].FindControl("cbDelete1");
    if( check != null )
    {
         check.Checked = true;
        }
       }
    foreach (Control c in this.Repeater1.Controls)
    {
        HtmlInputCheckBox check = (HtmlInputCheckBox)c.FindControl("cbDelete1");
    if( check != null )
    {
         check.Checked = true;
        }

       }

  • 相关阅读:
    Tcp抓包以及Tcp状态
    Wireshark抓包使用指南
    服务端tcp syn无响应,无回复
    升级openssh
    平滑升级Nginx
    Memcached 未授权访问漏洞修复
    服务端高并发分布式架构演进之路
    es索引查询与删除
    申请elasticsearch中x-pack插件许可证及授权
    独立安装ab压力测试工具及测试nginx性能
  • 原文地址:https://www.cnblogs.com/zhukezhuke/p/1773479.html
Copyright © 2020-2023  润新知