我有一个网络表单,我试图在textchanged事件上将textbox控件属性设置为false。我有多个文本框,我把它们放到了一个面板中。现在我正在检查文本框的文本更改事件中的条件。如果条件匹配则不会有任何更改,但如果没有,那么我将面板控件中文本框的enable属性设置为false。 这就是我在做什么 -
<asp:TextBox ID="TextBox1" runat="server" Width="150px" AutoPostBack="True"
ontextchanged="TextBox1_TextChanged"></asp:TextBox>
<asp:Panel ID="Panel1" runat="server">
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
<asp:TextBox ID="txt2" runat="server"></asp:TextBox>
<asp:TextBox ID="txt3" runat="server"></asp:TextBox>
</asp:Panel>
我的cs代码 -
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
SqlConnection cons1 = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ConnectionString);
cons1.Open();
SqlCommand scmd1 = new SqlCommand("select name from tbl_names where name='"+TextBox1.Text+"'", cons1);
SqlDataReader sdr1 = scmd1.ExecuteReader();
if (sdr1.HasRows)
{
while (sdr1.Read())
{
Panel1.Visible = true;
Control ctrl = new Control();
foreach (Control c in ctrl.Controls)
{
if (c is TextBox && c.ID.StartsWith("txt"))
((TextBox)c).ReadOnly = false;
}
}
}
else
{
Panel1.Visible = true;
Control ctrl1 = new Control();
foreach (Control c in ctrl1.Controls)
{
if (c is TextBox && c.ID.StartsWith("txt"))
((TextBox)c).ReadOnly = true;
}
}
cons1.Close();
}
请指导我为什么这不起作用?
答案 0 :(得分:2)
我认为你的
Control ctrl = new Control();
foreach (Control c in ctrl.Controls)
应该是
foreach (Control c in Panel1.Controls)
此外,您正在谈论Enabled
属性,但您不在代码中使用它。但是根据你所说的,如果文本框被禁用,我认为不会抛出textchanged事件。