c# - 如何从文本框获取值

标签 c# asp.net winforms visual-studio textbox

我改变了我的问题,因为它可能没有被理解。也对不起我的英语...

动态创建将它们放入数组中的文本框。

我的一段代码:

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();
    }
}

如何获取文本框的值? 具体来说,我想传递数据库中的数据。标签是测试我是否获得该值。

谢谢!!!

最佳答案

不确定您是否意识到,但在 for 循环的每次迭代中,您都将 PlaceHolder1 放置在 Panel1 中。也许您打算在 for 循环之后执行 Panel1.Controls.Add(PlaceHolder1);
无论如何,您已将这些 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
}

关于c# - 如何从文本框获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808314/

相关文章:

c# - 无法将我的登录结果定向到 Controller

c# - 在转换器 (IValueConverter) 中使用 "await"不起作用?

c# - 为什么我的程序不能确定对动态变量使用哪种扩展方法?

c# - Umbraco 7 局部 View 宏观渲染

wpf - 托管的Winform控件不响应来自WPF的事件

asp.net - 如何删除所有标签并获得纯文本?

javascript - Ajax 调用仅在第一行之后加载数据

c# - 解决 "InvalidOperationException: The LINQ expression [...] could not be translated"并保留 ToListAsync()

c# - 使用 Windows 原则/角色以编程方式控制对控件/窗体的访问 - C#

c# - 允许自定义控件正确滚动出 View