FindControl失礼

时间:2017-02-14 20:15:29

标签: c# asp.net

我有一个FormView,我试图根据输入到该视图中的一个文本框来触发操作。我的目的是将控制权抛给'protected void ARSControlNumTextBox_TextChanged'部分后面的代码,我想将TextBox的内容填充到标签(CurrentCtrl)中。

我已经设置了一个断点来观察正在发生的事情,因为我没有看到预期的结果。以下是有问题的代码:

 protected void ARSControlNumTextBox_TextChanged(object sender, EventArgs e)
    {
        TextBox thecontrol = (TextBox)ARS30InputFrm.Row.FindControl("ARSControlNum");
        if (thecontrol != null)
            CurrentCtrl.Text = thecontrol.Text;
    }

发生的是跳过值赋值。所以似乎'thecontrol'是空的!这不会增加。

这是Formview的缩写部分,因此您可以看到我从哪里获取我的价值观:

    <asp:FormView runat="server" ID="ARS30InputFrm" DataSourceID="ARFS" DefaultMode="Insert">
   <InsertItemTemplate>
        Control #:
        <asp:TextBox Text='<%# Bind("ARSControlNum") %>' runat="server" AutoPostBack="true" OnTextChanged="ARSControlNumTextBox_TextChanged" ID="ARSControlNumTextBox" />
        <asp:LinkButton runat="server" Text="Insert" CommandName="Insert" ID="InsertButton" CausesValidation="True" />&nbsp;<asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel" ID="InsertCancelButton" CausesValidation="False" />
    </InsertItemTemplate>
</asp:FormView>

标签是从TextBox传出数据的最终目标:

Current Control Edit: <asp:Label ID="CurrentCtrl" runat="server" ></asp:Label>

我不知道我在这里做错了什么。有人看到了吗?如果是这样的话,我肯定会欣赏目标上的一些目光,因为它让我脱离弯曲的一端! 问候, 肯...

1 个答案:

答案 0 :(得分:4)

不应该

protected void ARSControlNumTextBox_TextChanged(object sender, EventArgs e)
{
    TextBox thecontrol = (TextBox)ARS30InputFrm.Row.FindControl("ARSControlNumTextBox");
    if (thecontrol != null)
        CurrentCtrl.Text = thecontrol.Text;
}