【问题标题】:Add an Editor control dynamically inside of a repeater using AJAX使用 AJAX 在转发器内动态添加编辑器控件
【发布时间】:2009-12-09 22:23:40
【问题描述】:

我正在寻找一种将编辑器控件(来自 ASP.NET AJAX 控件工具包)添加到转发器的每个元素的方法。如果我只是将它包含在转发器的 ItemTemplate 中,它工作正常,但我的问题是它产生的标记很大,这会大大减慢页面速度(即使打开压缩)。

我没有任何运气使用更新面板在中继器项内添加控件 - 我认为这可能是首选方法,但在中继器项内的更新面板内动态添加控件并不是我的事已经取得了成功,但我似乎找不到任何好的例子。

我考虑的另一种选择是使用 PageMethods 呈现控件并将 HTML 发送回页面以让 javascript 将其放在适当的位置,然后处理它,但它不会让我呈现控件 -我收到“页面不能为空。请确保在 ASP.NET 请求的上下文中执行此操作。”的 InvalidOperationException。我的猜测是,生成的所有 javascript 都使得我不能只即时渲染编辑器控件。

你能指出我完成这项工作的正确方向吗?

谢谢

编辑:如果可能的话,另一种选择是在页面的标记中放置一个普通的编辑器控件,然后根据需要使用 javascript 在转发器内部移动它。我可以使用普通控件执行此操作,但是当我使用编辑器执行此操作时,它的行为并不好 - 出现文本框,但不允许我在其中单击。如果您对此有任何想法,我也将不胜感激。这是代码:

<span id="spanHiddenEditor" style="display: block;">
    <cc1:Editor ID="ed1" runat="server" Height="200" Width="400" />
</span>
<script type="text/javascript">
    function createTextBox(idx) {
        var span = $get("span1_" + idx); // this gets me the target location
        var hiddenEditorSpan = $get("spanHiddenEditor")
        var editorHtml = hiddenEditorSpan.innerHTML;
        hiddenEditorSpan.innerHTML = "";
        span.innerHTML = editorHtml;
    }
</script>

【问题讨论】:

  • 我永远无法完成这项工作,因此我做了一个解决方法,在伪弹出窗口中显示我的编辑器控件,以便它在页面上仅出现一次,在转发器之外。我作弊并将转发器项目中的信息放入隐藏字段,以便当页面提交时,我能够追踪转发器中的哪个项目负责回发。不是一个完美的解决方案,但它有效。我没有 SO 点来结束这个问题,所以如果有人想结束它,请随意。

标签: asp.net ajax updatepanel ajaxcontroltoolkit pagemethods


【解决方案1】:

使用类识别转发器中的位置,然后使用 jquery 在页面准备好插入 html

$(function() {  
        $(".myclass").Append("<htmlz>");
}); 

然后,如果您需要识别每个文本框,您可以使用父容器 ID 例如。

$("#myID div.class input").value

我是一个完整的 jquery newb,所以没有一个可能没有一个会起作用,但我相信这个想法是个好主意!

【讨论】:

  • 这似乎根本无法满足我的需求 - 我正在寻找如何将编辑器控件放到中继器内的 UpdatePanel 上。我没有使用 jQuery,也看不到 CSS 在这里是如何适用的。这可能是为了另一个帖子吗?
  • 是编辑器控件,您想下载一次控件代码,并将其插入到许多地方(在本例中,插入到所有具有 myclass 类的 div 中),然后为了单独访问控件,您应该使用父 div id。它不是为了另一个帖子!这似乎是您在第 3 段中所指的内容,但我不熟悉页面方法。
  • 我想我现在明白你在说什么了——抱歉,我一开始没看到。但如果我理解正确,您的 jQuery 代码会将 HTML 从原始控件移动到新位置。我已经尝试过使用常规 javascript(请参阅我帖子底部的编辑),但没有运气 - 我的猜测是由于控件的复杂性。我希望使用 jQuery 语法会有相同的最终结果。像文本框这样的简单控件可以很好地移动,但编辑器的某些东西使它不友好地移动。
猜你喜欢
  • 2011-12-01
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多