使用AJAX在转发器内动态添加编辑器控件

时间:2009-12-09 22:23:41

标签: asp.net ajax updatepanel ajaxcontroltoolkit pagemethods

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

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

我考虑的另一个选择是使用PageMethods渲染控件并将HTML发送回页面以让javascript将其放在适当的位置,然后处理它,但它不会让我渲染控件 - 我得到一个InvalidOperationException“Page不能为null。请确保在ASP.NET请求的上下文中执行此操作。”我的猜测是,生成的所有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>

1 个答案:

答案 0 :(得分:0)

使用类识别转发器中的位置,然后使用jquery在页面上输入html

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

然后,如果您需要识别每个文本框,则可以使用父容器ID执行此操作,例如

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

我是一个完全jquery newb所以没有它可能没有它会起作用,但我相信这个想法很好!

相关问题