C#中的FormView FindControl EditTemplate

时间:2018-01-29 00:43:11

标签: c# vb.net formview findcontrol vb.net-to-c#

我在C#asp.net webforms的代码背后有这个,它不会执行,从VB.NET文件转换。 VB Webform执行得很好,从Pre-Render中以编辑模式查找控件。但是C#版本没有。

有人能够指出什么是错的吗?该代码应该在EditMode中找到Telerik TextBox内容,并使用TextBox的文本更改标题。

VB.NET代码

Private Sub FormView1_PreRender(sender As Object, e As EventArgs) Handles FormView1.PreRender
    If FormView1.CurrentMode = FormViewMode.Edit Then
        Dim ProductNameTextBox As Label = FormView1.FindControl("BannerLabel")
        Dim StudentName As RadTextBox = FormView1.FindControl("FirstNameTxtBx")
        Dim UpdateButton As Button = FormView1.FindControl("UpdateButton")
        ProductNameTextBox.Text = "Edit " + StudentName.Text + "'s Profile"
        UpdateButton.Text = "Update changes to " + StudentName.Text + "'s Profile"
    End If
End Sub

C#代码

private void FormView1_PreRender(object sender, EventArgs e)
{
    if (FormView1.CurrentMode == FormViewMode.Edit)
    {
        Label ProductNameTextBox = FormView1.FindControl("BannerLabel") as Label;
        RadTextBox StudentName = FormView1.FindControl("FirstNameTxtBx") as RadTextBox;
        Button UpdateButton = FormView1.FindControl("UpdateButton") as Button;
        ProductNameTextBox.Text = "Edit " + StudentName.Text + "'s Profile";
        UpdateButton.Text = "Update changes to " + StudentName.Text + "'s Profile";
    }
}

1 个答案:

答案 0 :(得分:0)

您似乎忘记了C#版本中的subscribeFormView1.PreRender事件。

在您的VB.NET代码中,您有Handles FormView1.PreRender自动订阅该事件。 Handles关键字在C#中没有等价物,因此您需要自己订阅该事件。

在代码中的某处添加以下行,以便在加载或初始化Web表单时执行:

FormView1.PreRender += FormView1_PreRender;

如果之后仍然没有工作,您可能需要提供更多信息,因为我在方法体内没有看到任何错误。