【问题标题】:Dynamically generated content in a PlaceHolder inside of a FormView?FormView 内的 PlaceHolder 中动态生成的内容?
【发布时间】:2013-06-30 00:57:05
【问题描述】:

在这里寻求帮助,因为这让我很难过。长话短说,我有一个从函数构建的动态表,显示在 FormView 内的占位符中。

我在 FormView 的 EditItemTemplate 中有一个“保存”按钮,CommandName="Save" - 我有一个 Select Case(在这里使用 VB)并且(几乎)一切都按预期工作。

但是,当我在 Code Behind 中拉出 PlaceHolder 时,我在 PlaceHolder 中没有显示任何控件。

这里有一个简短的纲要:

FormView ItemTemplate 有一个 View_PlaceHolder 可以正确显示动态生成的表中的数据。 FormView EditItemTemplate 有一个 Edit_PlaceHolder,它将动态生成的表中的相同数据加载到 TextBox 中(工作正常,相同的数据按预期显示)

当我点击保存时,我当前的代码是:

Dim Edit_PlaceHolder as PlaceHolder = FormView1.FindControl("Edit_FV_PlaceHolder")
Dim EditTable as Table = Edit_PlaceHolder.FindControl("Edit_Plan_Holder")

Edit_PlaceHolder 不是什么都没有,但在 Controls.Count 中有 0 个控件

哦,还有一点信息 - 我的 Table 已构建并添加到 FormView.DataBound 事件中的 PlaceHolder。

我做错了什么?

【问题讨论】:

  • 你在用什么事件,你能显示一些代码吗?
  • 使用 FormView.DataBound 来确定 CurrentMode。如果 CurrentMode = ReadOnly,则显示 View Table。如果 CurrentMode=Edit,则显示编辑表。我将控件添加到 FormView.DataBound 事件中的 PlaceHolder。

标签: asp.net vb.net dynamic formview


【解决方案1】:

您也必须在 PostBacks 上重新填充和添加动态添加的表,而不仅仅是在初始加载时。查看此question 的答案以获取更多详细信息。

【讨论】:

  • 在生命周期中的什么时候我可以这样做?页面加载? Page_Init?
  • 我一直都能在 Page_Load 中完成它,但我读到的很多内容都说是在 Init 中完成的。关键是将这部分负载保持在 If Not Page.IsPostback 块之外。
  • 嗯,这很奇怪。现在尝试一下。当我单击“编辑”并将 CodeBehind 中的 FormView 设置为编辑时,我显示记录 #1 就好了 - 但占位符控件仍然是视图占位符。如果我单击记录 2,则编辑占位符会显示在控件中。这几乎就像我看到这个循环:1)初始页面加载 - 加载 FormView VIEW 数据。 2) 点击Edit Button,导致回发,再次触发Page_Load,此时FormView仍显示View,直到AFTER Page_Load完成后才触发FormView的数据绑定和切换到EDIT。
  • 好吧,我构建了一个小函数来递归地遍历我传递它的父控件的子控件。如果我在 FormView.DataBound 之后运行此函数,我会显示我正在寻找的正确 Edit_Placeholder,并且进一步 - 我的所有控件都在其中。但是,在单击 Save 按钮后,我有 zero 控件在 PlaceHolder 中。当我单击按钮时,我在 PlaceHolder 中的控件(位于 FormView 中)丢失。如何通过单击保存该数据?
  • 我会参考我的答案。确保在每次回发时重新添加每个控件,以使这些值保持不变。
【解决方案2】:

好的,这就是发生的事情:

1) 正如 NoAlias 所说,需要保留 ID。如果我处于“查看”或“编辑”模式,我使用 Page_Load 设置 ViewState 变量。

2) 我使用了单独的 BuildViewTable() 方法和 BuildEditTable() 方法,在它们内部调用了我的单独类并构建了表格。

3) 现在一切正常 :) 谢谢,NoAlias!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多