如何从其ID中检索ViewState中的TextBox值

时间:2012-10-19 13:57:01

标签: asp.net

我在ASP.NET页面中以编程方式构建了许多文本框,在我单击按钮后,我想处理这些值,是否有可能从ViewState中的ID中检索它们?

这是我的代码:

aspx中表的引用:

<asp:Table ID="Distances" runat="server" ViewStateMode="Inherit"></asp:Table>

然后在创建所有行和单元格后面的代码中,我将一个文本框添加到其中一些:

Distances.Rows[j].Cells[i].Controls.Add(CreateTB(distance.ToString(), (i + j * rows).ToString(), false));

    protected TextBox CreateTB(string text, string id, bool ebanled = true)
    {
        TextBox tb = new TextBox() { Text = text, ID = id, Enabled = ebanled};
        tb.TextChanged += new EventHandler(OnTBChanged);
        return tb;
    }

1 个答案:

答案 0 :(得分:1)

默认情况下启用了

ViewState,因此{/ 1}}属性应该在回发后保持不变。

所以你可以使用Text或枚举它们来引用FindControl("TextBoxID")(假设它们被添加到像TextBox这样的容器控件中):

Panel

foreach(TextBox txt in MyPanel.Controls.OfType<TextBox>())
{
    String text = txt.Text;
}

我假设您没有在回发中重新创建TextBox txt = (TextBox)MyPanel.FindControl("TextBox1") String text = txt.Text; 。因此,您需要使用与以前相同的ID,并在页面生命周期的最后阶段在TextBoxes中重新创建它们。所以你可以在一个事件中创建它们,但你不能在那里重新创建它们。

您应该在动态创建代码时显示代码,然后我可以更具体。

TRULY UNDERSTANDING DYNAMIC CONTROLS