我试图在面板中显示5x5的文本框网格。点击Show
后,空文本框将为空(visible: false;
),非空文本框将显示在正确的位置。
我当前的.aspx文件:
<body>
<form id="form1" runat="server">
<div>
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</div>
<asp:Button ID="btnShow" runat="server" Text="Show" onclick="btnShow_Click" />
</form>
</body>
代码背后:
protected void Page_Load(object sender, EventArgs e)
{
//Declare the array
//int[,] wsArray = new int[5, 5];
//char[] delimiterChars = { ' ', ' ', ' ' };
StringWriter stringWriter = new StringWriter();
// Put HtmlTextWriter in using block because it needs to call Dispose.
using (HtmlTextWriter hw = new HtmlTextWriter(stringWriter))
{
int number = 1;
//hw.Write("<table>");
for (int i = 0; i <= 4; i++)
{
//hw.Write("<tr>");
for (int j = 0; j <= 4; j++)
{
System.Random rnd = new Random();
TextBox tb = new TextBox();
tb.ID = number.ToString();
tb.MaxLength = 1;
tb.Width = Unit.Pixel(40);
tb.Height = Unit.Pixel(40);
Panel1.Controls.Add(tb);
number++;
}
Literal lc = new Literal();
lc.Text = "<br />";
Panel1.Controls.Add(lc);
}
}
}
protected void btnShow_Click(object sender, EventArgs e)
{
foreach (Control text in Panel1.Controls)
{
if (text == null)
{
text.Visible = false;
}
else
{
text.Visible = true;
}
}
}
答案 0 :(得分:1)
您需要先获取文本框; 然后检查其Text
属性。在按钮处理程序btnShow_Click()
内尝试此操作:
foreach (Control control in Panel1.Controls)
{
var textBox = control as TextBox;
if (textBox != null)
{
textBox.Visible = !string.IsNullOrEmpty(textBox.Text);
}
}
顺便说一句,如果您从服务器端设置Visible=False
,您的网站布局可能(可能不会)中断,因为根本不会呈现控件。在这种情况下替换这一行:textBox.Visible = !string.IsNullOrEmpty(textBox.Text);
包含以下内容:
if (string.IsNullOrEmpty(textBox.Text))
{
textBox.Style["visibility"] = "hidden";
}