我有一个DevExpress GridView,其中包含一个带有自定义DataItemTemplate的列
column.SetDataItemTemplateContent( c =>
{
ViewContext.Writer.Write(
Html.Partial( "PartialView" )
);
} );
部分视图PartialView
看起来像:
<p>text</p>
<script>
console.log("hello from PartialView");
</script>
因此,在页面重新加载后,我得到console.log
输出x次,其中x是我的GridView中显示的行数。但是,如果我转到GridView的下一页,js就不再执行了,我不再获得console.log
个输出。部分视图正确呈现,因为每行仍然显示“文本”。
如何在使用gridview分页期间再次获取输出?
(顺便说一下。我的目标是通过javascript渲染化学结构。简化示例以显示一般问题。)
答案 0 :(得分:0)
尝试添加以“dxss_”开头的脚本标记ID,如下所示:
<script id="dxss_myscript" type="text/javascript">
alert('hello from PartialView');
</script>
答案 1 :(得分:0)
我不完全确定你要做什么,但不是在返回中嵌入javascript,而是可以连接到客户端脚本。我会给你的DOM元素一个唯一的类,然后设置ClientSideEvents.EndCallBack。
settings.ClientSideEvents.EndCallback =
"function (s,e) { if (e.command != 'FUNCTION') { YourCustomMethod(s, e) }; }";
一些简单的jquery或直接javascript将允许您获取与您的类名匹配的DOM对象列表作为选择器,并且您可以包含在数据属性中处理所需的任何其他数据。
在您的示例中,您的部分视图看起来像:
<p class="actonme" data-msg="hello from PartialView">text</p>
,你的方法看起来像:
function YourCustomMethod(s, e) {
var objs = document.getElementsByClassName('actonme');
var count = objs.length;
for (var iIndex = 0; iIndex < count; iIndex++) {
console.log(objs[iIndex].getAttribute("data-msg"));
}
}