代码之家  ›  专栏  ›  技术社区  ›  Joe Enos

使用AJAX在中继器内部动态添加编辑器控件

  •  0
  • Joe Enos  · 技术社区  · 16 年前

    我正在寻找添加编辑器控件的方法(从ASP.NETAJAX控件工具包)到中继器的每个元素。如果我只是将它包含在中继器的ItemTemplate中,它就可以正常工作,但我的问题是它生成的标记太大,这会大大减慢页面的速度(即使是压缩)。

    使用更新面板将控件添加到repeater项中我没有任何运气-我认为这可能是首选方法,但在repeater项中的更新面板中动态添加控件并不是我做过的任何成功的事情,而且似乎也找不到这方面的任何好例子。

    我考虑的另一种方法是使用PageMethods呈现控件,并将HTML发送回页面,让javascript将其放在适当的位置,然后处理它,但它不会让我呈现控件-我得到一个InvalidOperationException“page cannot be 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 回复  |  直到 16 年前
        1
  •  0
  •   Paul Creasey    16 年前

    用类标识repeater中的位置,然后使用jquery在页面上插入html

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

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

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

    我是一个完全的jquery新手,所以没有一个它可能不会工作,但我相信这是一个好主意!

    推荐文章