【发布时间】:2013-02-26 19:41:08
【问题描述】:
在我的代码中,我需要创建一些 textboxes[],它会从数据库中获取一些信息,但它的工作率为 50%
public static Table tableinfo = new Table();
public static TableRow rowinfo = new TableRow();
public static TextBox[] information = new TextBox[1000];
public static Label[] information1 = new Label[1000];
public static Label[] information2 = new Label[1000];
public static Label[] information3 = new Label[1000];
public static Label[] information4 = new Label[1000];
public static string[] gettext = new string[1000];
public static int textboxes;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
textboxes = 1;
for (int i = 0; i < 1000; i++)
{
Array.Clear(gettext, 0, gettext.Length);
Array.Clear(information, 0, information.Length);
}
}
else
{
}
tableinfo.Controls.Clear();
tableinfo.BorderWidth = 1;
addtextboxes();
placeholder1.Controls.Add(tableinfo);
makeandfilltextboxes();
}
public static void makeandfilltextboxes()
{
for (int i = 0; i < textboxes; i++)
{
gettext[i] = "";
}
for (int i = 0; i < textboxes; i++)
{
gettext[i] = information[i].Text;
//go to database and fetch information
information1[i].text = databaseinformation1[i];
information2[i].text = databaseinformation2[i];
information3[i].text = databaseinformation3[i];
information4[i].text = databaseinformation4[i];
}
}
static void TestForm_TextChanged(object sender, EventArgs e)
{
makeandfilltextboxes();
tableinfo.Controls.Clear();
tableinfo.BorderWidth = 1;
textboxes++;
addtextboxes();
}
public static void addtextboxes()
{
for (int i = 0; i < textboxes; i++)
{
rowinfo = new TableRow();
TableCell cellinfo = new TableCell();
information[i] = new TextBox();
information[i].AutoPostBack = true;
information[i].CausesValidation = false;
information[i].EnableViewState = true;
information[i].Text = gettext[i];
information[i].TextChanged += new EventHandler(TestForm_TextChanged);
rowinfo.Cells.Add(cellinfo);
cellinfo.Controls.Add(information[i]);
tableinfo.Controls.Add(rowinfo);
TableCell cellinfo1 = new TableCell();
information1[i] = new Label();
information1[i].EnableViewState = true;
information1[i].Text = databaseinformation1[i];
rowinfo.Cells.Add(cellinfo1);
cellinfo.Controls.Add(information1[i]);
tableinfo.Controls.Add(rowinfo);
TableCell cellinfo2 = new TableCell();
information2[i] = new Label();
information2[i].EnableViewState = true;
information2[i].Text = databaseinformation2[i];
rowinfo.Cells.Add(cellinfo2);
cellinfo.Controls.Add(information2[i]);
tableinfo.Controls.Add(rowinfo);
TableCell cellinfo3 = new TableCell();
information3[i] = new Label();
information3[i].EnableViewState = true;
information3[i].Text = datbaseinformation3[i];
rowinfo.Cells.Add(cellinfo3);
cellinfo.Controls.Add(information3[i]);
tableinfo.Controls.Add(rowinfo);
TableCell cellinfo4 = new TableCell();
information4[i] = new Label();
information4[i].EnableViewState = true;
information4[i].Text = databaseinformation4[i];
rowinfo.Cells.Add(cellinfo4);
cellinfo.Controls.Add(information4[i]);
tableinfo.Controls.Add(rowinfo);
}
}
如您所见,我正在用您在信息中填写的值填充数组[i]
关于那里的值,如果我能找到一些东西,我会在数据库中查找。
这一切都很好。
唯一的问题是information[i].TextChanged += new EventHandler(TestForm_TextChanged); 的调用方式很奇怪。
第一次输入文本框时触发 第二次没有被解雇 第三次触发 第四次没有被解雇 等等
如果我每次都能触发TestForm_TextChanged,问题就会得到解决。
我也有一些复选框,它们有checkedchanged的事件处理程序,它们显示手头上的信息是否被选中,这是否会导致一些问题 我在更新面板中工作,并在我的 aspx 设计器上有一个脚本管理器。 是什么导致了这个问题?
使用谷歌浏览器,我可以使用 ENTER 并且它会一直工作。 但是在 Internet Explorer 中输入不起作用。
注意:我在这里发送的代码只是一个副本,而不是真正的代码。 这是由于我的实习政策。
如果您需要有关代码的更多信息,请随意询问,请尽量详细说明。
【问题讨论】:
标签: c# asp.net arrays visual-studio-2010 text