asp.NetはaspxページのTextBoxコントロールを遍歴し、属性を読み取り専用に設定します.

5346 ワード

aspxページのコード:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="             .WebForm1" %> 

<!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></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server">1</asp:TextBox>
<br />
<p></p>
<asp:TextBox ID="TextBox2" runat="server">2</asp:TextBox>
<br />
<p></p>
<asp:TextBox ID="TextBox3" runat="server">3</asp:TextBox>
<br />
<p></p>
<asp:TextBox ID="TextBox4" runat="server">4</asp:TextBox>
<br />
<p></p>
</div>
</form>
</body>
</html>

方法1:
for (int i = 0; i < Page.Controls.Count; i++) 
{
foreach (System.Web.UI.Control stl in Page.Controls[i].Controls)
{
Response.Write(stl.ToString() + "<br/>");
if (stl is TextBox)
{
TextBox tb = (TextBox)stl;
tb.ReadOnly = true;
}
}
}

方法2:
foreach(System.Web.UI.Control stl in this.Form.Controls) 
{
Response.Write(stl.ToString()+"<br/>");
if(stl is System.Web.UI.WebControls.TextBox)
{
TextBox tb = (TextBox)stl;
tb.ReadOnly = true;
}
}

まず、クライアントとサーバ側のコントロールを含むページ上のすべてのコントロールを取得します.Form.Controls
先にフィルタ処理するサーバ---is System.Web.UI.WebControls.TextBox
強制的にTextBoxコントロール---TextBox tb=(TextBox)stlに変換する.
属性を設定---tb.ReadOnly = true;