从 C# 中以编程方式创建的 TextBox 中获取值 [英] Get value from programmatically created TextBox in C#

查看:78
本文介绍了从 C# 中以编程方式创建的 TextBox 中获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了这个瘙痒的问题,我无法让代码工作

I got this itching problem and I cant get the code to work

如何在提交表单时从 TextBox 中读取值?

How can i read the value from the TextBox when the form is posted?

一些代码...

protected override void CreateChildControls() {

    base.CreateChildControls();

    TextBox queryBox = new TextBox();
    queryBox.ID = "querybox";
    queryBox.ToolTip = "Enter your query here and press submit";
    Controls.Add(queryBox);

    Button queryButton = new Button();
    queryButton.UseSubmitBehavior = false;
    queryButton.ID = "querybutton";
    Controls.Add(queryButton);

    if (Page.IsPostBack == true) {
        try {
            string query = querybox.Text;

            DataGrid dataGrid = new DataGrid();
            dataGrid.DataSource = Camelot.SharePointConnector.Data.Helper.ExecuteDataTable(query, connectionString);
            dataGrid.DataBind();
            Controls.Add(dataGrid);
        } catch (Exception a) {
            Controls.Add(new LiteralControl(a.Message));
        } // try
    } // if
} // void

我已经稍微缩短了代码,但是您看到了这个想法,它的字符串 query = querybox.text 不起作用.我尝试了几种不同的变体,即

I've shortened the code a bit but you see the idea, its the string query = querybox.text that wont work. I've tried with a few different variants, i.e.

TextBox querybox = (TextBox)FindControl("querybox");
string query = querybox.Text;

但是没有...

感谢任何提示!谢谢

推荐答案

问题是您的控件未填充来自 CreateChildControls 中 ViewState 的值.我建议在您的按钮上使用点击事件处理程序.

The problem is that your controls are not populated with values from the ViewState in CreateChildControls. I'd recommend using a click event handler on your button.

更新您的按钮代码:

Button queryButton = new Button();
queryButton.UseSubmitBehavior = false;
queryButton.ID = "querybutton";
queryButton.Text = "Query";
queryButton.Click += new EventHandler(queryButton_Click);
Controls.Add(queryButton);

然后,编写点击事件处理程序:

Then, write the click event handler:

void queryButton_Click(object sender, EventArgs e)
{
    TextBox querybox = this.FindControl("querybox") as TextBox;
    try
    {
         string query = querybox.Text;
         DataGrid dataGrid = new DataGrid();
         dataGrid.DataSource = Camelot.SharePointConnector.Data.Helper.ExecuteDataTable(query, connectionString);
         dataGrid.DataBind();
         Controls.Add(dataGrid);
    }
    catch (Exception a)
    {
         Controls.Add(new LiteralControl(a.Message));
    } // try
}

这篇关于从 C# 中以编程方式创建的 TextBox 中获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆