【问题标题】:get value from dynamic Textbox从动态文本框获取价值
【发布时间】:2012-06-06 10:18:46
【问题描述】:

我有一些数组来保存我的控件。当调用函数初始化数组并将我的控件保存在数组中时。

代码:

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。 那么如何获取这个文本框的值??? 谢谢

【问题讨论】:

  • 这是一个丑陋的代码,用中继器代替...
  • 抱歉,我没有找到解决这个问题的方法。如果你能帮助我...我是 C# 的新手。谢谢
  • 如果它是动态的(运行时创建)和空引用异常,要么您没有将文本框实现为新实例(有时会出现此错误 - 所以删除并再次创建)或 textbox.text 值为空(放置一个 if 语句和 msgbox 来检查 textbox.text 以了解它是否为空)即:if(yourTextbox.Text == null){Messagebox.Show("YourTextbox没有任何文本") else{/ /做你想做的}
  • 在 c#/asp.net 上找到一本好书/资源,这样你就不再是新手了。快捷方式的答案不会长期有效

标签: c# asp.net textbox


【解决方案1】:

我注意到您的 UploadForm() 函数引用了 txtname,而您的实际 TextBox 被声明为 txtName。由于字段名称区分大小写,因此实际上并未定义字段“txtname”(小写“n”),因此它可能是动态页面中出现 NullReferenceException 的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多