如何从一个TextBox获得价值(How to get value from a TextBox)

2019-07-29 15:19发布

我改变我的问题,因为它可能无法理解。 也对不起我的英语水平?

动态地创建它摆阵文本框。

一块我的代码:

public partial class NewArticleForm : System.Web.UI.Page
{
    private Label[] lblName;
    private TextBox[] txtName;
    private Label[] lblSurname;
    private TextBox[] txtSurname;
    private PlaceHolder PlaceHolder1;

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

    public void dataofOtherAuthor()
    {
        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];
        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();    
            PlaceHolder1.Controls.Add(authorInformation);
            PlaceHolder1.Controls.Add(lblName[i]);
            PlaceHolder1.Controls.Add(txtName[i]); 
            PlaceHolder1.Controls.Add(lblSurname[i]);
            PlaceHolder1.Controls.Add(txtSurname[i]);    
            // Add a spacer in the form of an HTML <BR> element.
            Panel1.Controls.Add(PlaceHolder1);
            j++;      }  }

 protected void NumberList_SelectedIndexChanged(object sender, EventArgs e)
    {
        dataofOtherAuthor();
    }

    private void UploadForm()
    {
        int numberOfOtherAuthors = NumberOfOtherAuthors();
        int i=0;

            for (i = 0; i < numberOfOtherAuthors; i++)
            { 
                Label1.Text = txtName[i].Text;       

            }
        }


    protected void btnUpload_Click(object sender, EventArgs e)
    {
            UploadForm();
    }
}

我怎样才能得到文本框的值? 具体来说,我想通过在数据库中的数据。 标签是一个测试,如果我得到的值。

谢谢!!!

Answer 1:

不知道你是否知道或没有,但你把PlaceHolder1Panel1在你的for循环的每个迭代。 也许你的意思做Panel1.Controls.Add(PlaceHolder1); 之后的for循环?
无论如何,你已经把这些TextBox控件到窗体。 如果您正试图通过回发来访问它们,你需要自己设置为访问这些ID ,或通过其ASP集装箱访问它们(在设置runat="server" ):

x = (p1.Controls[placeHolderIndex].Controls[textBoxIndex] as TextBox).Text;

或者你可以尝试

x = (p1.FindControl("placeHolder_ID").FindControl("textBox_ID") as TextBox).Text;

再次,确保他们都runat="server"

txtName回传后,将不保留它的价值。

让你的第二个循环做的东西比覆盖组字符串,以及更多有用的; 也许每个值添加到列表

List<string> x = new List<string>();
for (i = 0; i < authors; i++)
{  
   x.Add((p1.Controls[placeHolderIndex].Controls[i] as TextBox).Text);
   //increment placeHolderIndex if you don't change your design
}


Answer 2:

引用:

txtName = new TextBox[authors];
int authors = 5;

你声明authors后创建阵列,这样你的错误显示, authors还不及更高版本txtName的不存在的存在(因为它没有正确实例化)。 将其更改为:

int authors = 5;
txtName = new TextBox[authors];

另外,正确性,修改Stringstring

应该这样做



Answer 3:

你需要在正确的时间足够早(一般的OnInit)添加控件控件正确地从后得到的值回。

是OnInit:

Form1.Controls.Add(myTextbox);

Page_Load中:

var text = myTextbox.Text;

退房HOW TO:使用Visual C#.NET动态创建ASP.NET控件或许多其他的解释“ASP.Net如何添加动态控件”的搜索条件。



Answer 4:

要检索在占位符的控制,使用Placeholder1.FindControl(" [控制名称] ")

你可能会想,当你正在创建它们的控件名称以独特的可参考的东西。

或者你可以参考它们Placeholder1.Controls( [索引] )如果你知道的控制指标。



Answer 5:

我利用我把它叫做一个不同的方法创建的对象txtName[i]这是我的问题。

public void dataofOtherAuthor() 
    { 
...
txtName[i] = new TextBox(); 
...}

private void UploadForm() 
    { 
...
Label1.Text = txtName[i].Text; 
...
}


文章来源: How to get value from a TextBox