我正在寻找一种方法将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>
答案 0 :(得分:0)
使用类识别转发器中的位置,然后使用jquery在页面上输入html
$(function() {
$(".myclass").Append("<htmlz>");
});
然后,如果您需要识别每个文本框,则可以使用父容器ID执行此操作,例如
$("#myID div.class input").value
我是一个完全jquery newb所以没有它可能没有它会起作用,但我相信这个想法很好!