请问在asp.net(C#)中如何对页面的所有同类控件进行赋同一值操作?
如:我的页面上有20个textBox控件,我要根据目前的页面是显示状态还是编辑状态来控制这20个textBox控件的readonly属性,要同时给他们赋值为realonly=true or readonly=false,
一个个的赋值太繁琐,有没有简单的方法啊,在线等待各位的指导----------------------

解决方案 »

  1.   

    string flage="true";
    if()
    {
     flage="false";
    }
    ...
    <asp:TextBox id=txt realonly=<%# flage%>>
      

  2.   

    可以用个for 循环遍历page.controls(1).control然后再循环的时候判断当前控件是否是textbox
    如果是,再根据现在是否是编辑状态给textbox增加attribute,比如
    textbox.attributes.add("readonly","true")
      

  3.   

    /// <summary>
    /// 直接根据表,编号,字段将文本信息填充页面.
    /// </summary>
    /// <param name="table">表名</param>
    /// <param name="keyfield">主键</param>
    /// <param name="textfield">文本字段,通常为语言</param>
    /// <param name="Page">页面对象</param>
    public void GetTextToPage(string table,string keyfield,string textfield,Control Page)
    {
    this.AddNewDict(table,keyfield,textfield);
    this.GetTextToPage(Page);
    } private void GetControls(Control control)
    {

    foreach(Control c in control.Controls)
    {
    if(c.Controls.Count>0 && !(c is DataGrid))
    this.GetControls(c); //Label 对象的处理.
    if (c is Label && c.Parent.FindControl(c.ID)!=null)
    //if (c is Label)
    {
    Label lb = (Label)c.Parent.FindControl(c.ID);
    if(lb!=null && this.TextDic[lb.ID]!=null)
    {
    lb.Text = TextDic[lb.ID].ToString();
    }

    }
    //LinkButton 对象的处理.
    if(c is LinkButton && c.Parent.FindControl(c.ID)!=null)
    //if(c is LinkButton)
    {
    LinkButton lt = (LinkButton)c.Parent.FindControl(c.ID);
    if(lt!=null && this.TextDic[lt.ID]!=null)
    {
    lt.Text = TextDic[lt.ID].ToString();
    }
    }

    //HyperLink 对象的处理.
    if(c is HyperLink && c.Parent.FindControl(c.ID)!=null)
    {
    HyperLink hl = (HyperLink)c.Parent.FindControl(c.ID);
    if(hl!=null && this.TextDic[hl.ID]!=null)
    {
    hl.Text = TextDic[hl.ID].ToString();
    }
    }

    }
    }这是我的一段代码,如有类同,纯属虚构....
      

  4.   

    楼上的只能对Text属性赋值,
    如果要对其他很多属性赋值,就需要用到反射!反射会比较灵活一点
      

  5.   

    for(int i=0;i<Page.Controls[1].Controls.Count;i++)
    {
    if(Page.Controls[1].Controls[i].GetType() == "TextBox")
    {
    TextBox txt1 = (TextBox)Page.Controls[1].Controls[i];
    txt1.ReadOnly = true;
    }
    }
      

  6.   

    用foreach语句对控件进行循环赋值,要想通过简单的语句来实现还不知道
      

  7.   

    上面少了一个namefor(int i=0;i<Page.Controls[1].Controls.Count;i++)
    {
    if(Page.Controls[1].Controls[i].GetType().Name == "TextBox")
    {
    TextBox txt1 = (TextBox)Page.Controls[1].Controls[i];
    txt1.ReadOnly = true;
    }
    }
      

  8.   

    string str_id;
    for(int i=1;i<N;i++)
    {
       str_id="TextBox"+Convert.ToString(i);
       txt_sort=(TextBox)Page.FindControl(str_id);
       txt_sort.ReadOnly=true;
    }N是页面中文本框 数量+1,(缺陷:要求ID为 TextBox1,TextBox2,TextBox3……)
      

  9.   

    TextBox txt_sort=new TextBox();
    上边少了句,不好意思
      

  10.   

    用FindControl在page查找控件,是textbox类型得就赋值。
      

  11.   

    请问大侠   lvenlee(大头.NET) 
    TextDic是什么?是你自定义的啊?
      

  12.   

    因asp.net的服務器控制在客戶端都會轉為客戶端控件
    所以可以直接在客戶端操作
    var nodes = document.getElementsByTagName("input");
    for(var i=0; i<nodes.length; i++)
    {
    if(nodes[i].type=="text")
    {
    nodes[i].value="初始值";
    }
    }
      

  13.   

    var nodes = document.getElementsByTagName("input");
    for(var i=0; i<nodes.length; i++)
    {
    if(nodes[i].type=="text")
    {
    nodes[i].value="初始值";
                      nodes[i].readOnly = true;
    }
    }
      

  14.   

    我来一个客户端的:
    function ClearControlMain( )
    {
    var inputColl = window.document.all.tags("input");
    for( var i=0;i< inputColl.length;i++ )
    {
    if ( inputColl[i].type.toLowerCase() == "text" || inputColl[i].type.toLowerCase() == "hidden"  )
    {
    inputColl[i].value = "";
    //inputColl[i].className = "cReadOnly";
    }
    if ( inputColl[i].type.toLowerCase() == "checkbox"  )
    {
    inputColl[i].checked = false;
    }
    }
    var selCol1 = window.document.all.tags("select");
    for( i=0 ; i< selCol1.length ; i++ )
    {
    selCol1[i].value = "";
    }
    }
      

  15.   

    20个TextBox的id不可能是自动生成的吧?
    知道id就好了.private void SetReadOnly(bool readOnly)
    {
        this.SetTextBoxReadOnly("textbox1",readOnly);//这里的ID写死就好了.
        this.SetTextBoxReadOnly("textbox2",readOnly);
    }private void SetTextBoxReadOnly(string textBoxId,bool readOnly)
    {
       TextBox textBox=(TextBox)FindControl(textBoxId);
       textBox.ReadOnly=readOnly;
    }
      

  16.   

    flying310(林林),"用FindControl在page查找控件,是textbox类型得就赋值。"
    一定要赋值才可以吗??????
    我已经试验过了,没有发现有什么问题呀