0

在我的代码中,我需要做一些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问题就会得到解决。

我也有一些复选框,他们有 checkchanged 的​​事件处理程序,他们显示手头上的信息是否被选中,这是否会导致我在更新面板中工作时出现一些问题,并且在我的 aspx 设计器上有一个脚本管理器。是什么导致了这个问题?

使用 Google chrome 我可以使用 ENTER 并且它会一直工作。但是输入在 Internet Explorer 中不起作用。

注意:我在这里发送的代码只是一个副本,而不是真正的代码。这是由于我的实习政策。

如果您需要有关代码的更多信息,请随意询问,尽量详细说明。

4

2 回答 2

0

我解决了这个问题,显然问题是没有 ID

所以我添加了信息[i].ID = "信息" + i; 这解决了问题

于 2013-02-27T09:14:34.283 回答
0

我认为问题在于您所有的文本框和标签都是静态的。使它们成为您Page实例的一部分。

于 2013-02-26T19:57:30.727 回答