c# - 从 C# 中以编程方式创建的 TextBox 中获取值

标签 c# sharepoint web-parts

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

发布表单时如何从 TextBox 读取值?

一些代码...

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 不起作用。我尝试过几种不同的变体,即

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

但是没有...

如有任何提示,我们将不胜感激! 谢谢

最佳答案

问题在于您的控件未填充 CreateChildControls 中 ViewState 的值。我建议在按钮上使用单击事件处理程序。

更新您的按钮代码:

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

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

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# - 从 C# 中以编程方式创建的 TextBox 中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4799154/

相关文章:

sharepoint-2010 - 如何在SharePoint 2010 Web部件中显示图像

css - 如何限制 Sharepoint 2010 WebPart 中 HtmlTable 中单元格的宽度?

javascript - 在某一天隐藏 Sharepoint 2013 页面上的 Web 部件

c# - 从 byte[] 返回文件在 MVC 3 中无法正常工作

security - SPContext.Current.Web.CurrentUser 返回误导性值

c# - 请向我解释扩展方法

使用新 ID 重定向共享点列表

elasticsearch - 将SharePoint在线索引插入Elasticsearch

c# - 将 OperationContext 传播到异步 WCF 调用中

c# - 使用 Serilog XML 配置指定自定义增强器