我正在寻找添加编辑器控件的方法(从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>