0

コントロールを保存するための配列がいくつかあります。関数を呼び出すと、配列が初期化され、コントロールが配列に保存されます。

コード:

private Label[] lblName;
    private TextBox[] txtName;
    private Label[] lblSurname;
    private TextBox[] txtSurname;
    private Label[] lblInstitution;
    private TextBox[] txtInstitution;
    private Label[] lblCountry;
    private TextBox[] txtCountry;
    private Label[] lblEmail;
    private TextBox[] txtEmail;
    private PlaceHolder PlaceHolder1;


    public int NumberOfOtherAuthors()
    {
        Int32 index = Convert.ToInt32(NumberList.SelectedValue);
        return index;
    }

    public void GUIofOtherAuthor()
    {
        int authors;
        int i = 0;
        int j = 1;


        authors = NumberOfOtherAuthors();
        lblName = new Label[authors];
        txtName = new TextBox[authors];
        lblSurname = new Label[authors];
        txtSurname = new TextBox[authors];
        lblInstitution = new Label[authors];
        txtInstitution = new TextBox[authors];
        lblCountry = new Label[authors];
        txtCountry = new TextBox[authors];
        lblEmail = new Label[authors];
        txtEmail = new TextBox[authors];
        PlaceHolder1 = new PlaceHolder();


        for (i = 0; i < authors; i++)
        {
            Label authorInformation = new Label();
            authorInformation.Text = "Information for Author " + j.ToString() + " :";

            lblName[i] = new Label();
            lblName[i].Text = "Name:";
            txtName[i] = new TextBox();
            lblSurname[i] = new Label();
            lblSurname[i].Text = "Surname:";
            txtSurname[i] = new TextBox();
            lblInstitution[i] = new Label();
            lblInstitution[i].Text = "Institution:";
            txtInstitution[i] = new TextBox();
            lblCountry[i] = new Label();
            lblCountry[i].Text = "Country:";
            txtCountry[i] = new TextBox();
            lblEmail[i] = new Label();
            lblEmail[i].Text = "Email:";
            txtEmail[i] = new TextBox();

            PlaceHolder1.Controls.Add(new LiteralControl("<table>"));
            PlaceHolder1.Controls.Add(new LiteralControl("<span style=\"font-weight:bold;\" "));
            PlaceHolder1.Controls.Add(authorInformation);
            PlaceHolder1.Controls.Add(new LiteralControl("</span>"));
            PlaceHolder1.Controls.Add(new LiteralControl("<tr><td>"));
            PlaceHolder1.Controls.Add(lblName[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td><td>"));
            PlaceHolder1.Controls.Add(txtName[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td></tr>"));
            PlaceHolder1.Controls.Add(new LiteralControl("<tr><td>"));
            PlaceHolder1.Controls.Add(lblSurname[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td><td>"));
            PlaceHolder1.Controls.Add(txtSurname[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td></tr>"));
            PlaceHolder1.Controls.Add(new LiteralControl("<tr><td>"));
            PlaceHolder1.Controls.Add(lblInstitution[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td><td>"));
            PlaceHolder1.Controls.Add(txtInstitution[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td></tr>"));
            PlaceHolder1.Controls.Add(new LiteralControl("<tr><td>"));
            PlaceHolder1.Controls.Add(lblCountry[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td><td>"));
            PlaceHolder1.Controls.Add(txtCountry[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td></tr>"));
            PlaceHolder1.Controls.Add(new LiteralControl("<tr><td>"));
            PlaceHolder1.Controls.Add(lblEmail[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td><td>"));
            PlaceHolder1.Controls.Add(txtEmail[i]);
            PlaceHolder1.Controls.Add(new LiteralControl("</td></tr>"));
            PlaceHolder1.Controls.Add(new LiteralControl("</table><br /> "));
            Panel1.Controls.Add(PlaceHolder1);

            j++;
        }
    }

今、別の関数でテキストボックスの値を取得したいと思いますpublic void UploadForm(){...}。やってみる

int i;
int numberOfOtherAuthors = NumberOfOtherAuthors();

for(i=0; i<numberOfOtherAuthors; i++)
{
   String a = txtname[i].text
}

データベースにアップロードしたいテキストボックスの値ですが、それらを文字列に保存するとしましょう。これを行うと、NullReferenceException が発生します。では、このテキストボックスの値を取得するにはどうすればよいですか??? ありがとう

4

1 に答える 1

1

実際の TextBox は として宣言されていますが、UploadForm()関数が を参照していることに気付きました。フィールド名は大文字と小文字が区別されるため、フィールド「txtname」(小文字の「n」) は実際には定義されていないため、動的ページで NullReferenceException が発生した可能性があります。txtnametxtName

于 2012-06-06T02:14:48.147 に答える