私のコードでは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);
が奇妙な方法で呼び出されることです。
テキストボックスに1回入力すると、2回目は起動されません。3回目は起動されません。4回目は起動されません。
TestForm_TextChanged
毎回発砲できれば問題は解決します。
また、checkedchangedのイベントハンドラーがチェックされているかどうかのチェックボックスがいくつかあります。これにより、updatepanelでの作業に問題が発生し、aspxdesingerにscriptmanagerがあります。この問題の原因は何ですか?
グーグルクロームで私はENTERを使うことができます、そしてそれはいつも働きます。ただし、EnterはInternetExplorerでは機能しません。
注:ここに送信したコードは、実際のコードではなく単なるレプリカです。これは私のインターンシップの方針によるものです。
コードに関する詳細情報が必要な場合は、できるだけ詳しく説明してください。