4

我有一个 DevExpress GridView,其中包含一个带有自定义 DataItemTemplate 的列

column.SetDataItemTemplateContent( c =>
  {
    ViewContext.Writer.Write(
      Html.Partial( "PartialView" )
    );
} );

部分视图PartialView如下所示:

<p>text</p>

<script>
  console.log("hello from PartialView");
</script>

因此,在页面重新加载后,我得到console.logx 次输出,其中 x 是 GridView 中显示的行数。但是,如果我转到 GridView 中的下一页,则 js 将不再执行,并且我不再获得任何console.log输出。部分视图正确呈现,因为每行仍然显示“文本”。

在使用gridview分页期间如何再次获得输出的任何想法?

(顺便说一句。我的目标是通过 javascript 呈现化学结构。简化示例以显示一般问题。)

4

2 回答 2

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"));
    }
}
于 2014-03-10T18:50:58.467 回答
0

尝试添加以“dxss_”开头的脚本标签 id,如下所示:

<script id="dxss_myscript" type="text/javascript">
  alert('hello from PartialView');
</script>
于 2013-03-13T15:09:04.660 回答