请问在asp.net(C#)中如何对页面的所有同类控件进行赋同一值操作?
如:我的页面上有20个textBox控件,我要根据目前的页面是显示状态还是编辑状态来控制这20个textBox控件的readonly属性,要同时给他们赋值为realonly=true or readonly=false,
一个个的赋值太繁琐,有没有简单的方法啊,在线等待各位的指导----------------------
如:我的页面上有20个textBox控件,我要根据目前的页面是显示状态还是编辑状态来控制这20个textBox控件的readonly属性,要同时给他们赋值为realonly=true or readonly=false,
一个个的赋值太繁琐,有没有简单的方法啊,在线等待各位的指导----------------------
解决方案 »
- DataReader的GetString异常,奇怪。
- 数据库连接数过多,怎么都降不下来。。。
- vs 的一个小问题 请大家帮忙解决一下
- web搜索,海量数据处理
- 设计版没人回复:Adobe Illustrator CS 为什么无法识别“经典创艺体简”字体?
- listbox中右边添加到左边判断是否添加过的问题
- 高分求救,怎么设置服务器运行的button在点击以后Enabled=false
- 用存储过程返回搜索结果,请指教!
- asp.net(C#) 考试系统中,如何实现实现倒计时功能?用哪些(JS等)技术可以实现?思路这样?
- 请问我在WINDOWS2000里只装了。NET FRAMEWORK SDK之外,就可以去ASP。NET的测试吗?》
- MSSQLServer连接分页显示数据
- 急~!怎样启动Web服务器(之前是好的)
if()
{
flage="false";
}
...
<asp:TextBox id=txt realonly=<%# flage%>>
如果是,再根据现在是否是编辑状态给textbox增加attribute,比如
textbox.attributes.add("readonly","true")
/// 直接根据表,编号,字段将文本信息填充页面.
/// </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();
}
}
}
}这是我的一段代码,如有类同,纯属虚构....
如果要对其他很多属性赋值,就需要用到反射!反射会比较灵活一点
{
if(Page.Controls[1].Controls[i].GetType() == "TextBox")
{
TextBox txt1 = (TextBox)Page.Controls[1].Controls[i];
txt1.ReadOnly = true;
}
}
{
if(Page.Controls[1].Controls[i].GetType().Name == "TextBox")
{
TextBox txt1 = (TextBox)Page.Controls[1].Controls[i];
txt1.ReadOnly = true;
}
}
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……)
上边少了句,不好意思
TextDic是什么?是你自定义的啊?
所以可以直接在客戶端操作
var nodes = document.getElementsByTagName("input");
for(var i=0; i<nodes.length; i++)
{
if(nodes[i].type=="text")
{
nodes[i].value="初始值";
}
}
for(var i=0; i<nodes.length; i++)
{
if(nodes[i].type=="text")
{
nodes[i].value="初始值";
nodes[i].readOnly = true;
}
}
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 = "";
}
}
知道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;
}
一定要赋值才可以吗??????
我已经试验过了,没有发现有什么问题呀