如何在RADGrid上启用部分渲染?

时间:2012-04-18 15:41:02

标签: asp.net ajax telerik dotnetnuke radgrid

原帖

下面的2个附加编辑

我的页面上有一个RADGrid,但当用户点击网格中的任何控件,Page Forward / Back,Page Number,PageSize,Refresh,Checkbox Row Selector等时......整个页面都会刷新。我想让网格本身刷新。我在网上看了,但我似乎无法找到所有信息来点击它。

我正在使用DNN 6,我尝试以编程方式在页面上注册RADAJAXManager(如果缺少,通常是这样)。我在网上看到人们引用了EnableAJAX设置,但之后发现它在较新的Telerik控件中被折旧,因此该选项被排除在外。然后,我尝试使用AddAjaxSetting()方法以编程方式添加AJAX设置。我尝试了几种参数变化,但没有任何反应。显然我做错了什么......我完全看错了地方?

我尝试用一​​个AJAXPanel包围我的RADGrid,但后来我遇到的问题是刷新后整个页面“闪烁”,RADGrid完全消失,然后重新出现。我查看了Telerik网站上的几个Demo,我不知道他们如何让他们的RADGrid使用旋转圆刷新方法只用于RADGrid。

我尝试将页面的“支持部分渲染”设置为true,但接下来发生的是整个页面灰色与旋转圆圈一起出现。我只是想模仿Telerik Demo's上显示的相同行为。

帮助!!! ::沮丧::

有任何线索或建议吗?

编辑4/18/2012 @美国东部时间下午7:48

我正在使用以下代码在我放置自定义用户控件的页面上创建RADAjaxManager(如果缺少)。

Private Sub RegisterRADAjaxManager(ByVal p_objPage As Page)
    '***************************************
    ' Register RAD AJAX Manager (If Missing)
    '***************************************
    Dim objRADAJAXManager As Telerik.Web.UI.RadAjaxManager = Telerik.Web.UI.RadAjaxManager.GetCurrent(p_objPage)

    '***************************************
    ' If RADAJAXManager Is Missing, Add It
    '***************************************
    If (objRADAJAXManager Is Nothing) Then
        objRADAJAXManager = New Telerik.Web.UI.RadAjaxManager
        objRADAJAXManager.ID = "RADAJAXManager"
        p_objPage.Form.Controls.Add(objRADAJAXManager)
    End If 
End Sub

我使用以下代码添加Ajax设置:

'***************************************
' Register RADGrid w/ RADAJAXManager
'***************************************
With TekkGrid.GetCurrentRADAJAXManager(Me.Page)
    .AjaxSettings.AddAjaxSetting(Me.gridMain, Me.gridMain)
    .AjaxSettings.AddAjaxSetting(Me.gridMain, Me.RADLoadingPanel)
End With

在我的ASCX文件中,我有:

<Telerik:RadGrid ID="gridMain" runat="server" />
<telerik:RadAjaxLoadingPanel ID="RADLoadingPanel" runat="server">
</telerik:RadAjaxLoadingPanel>

我错过了什么吗?

编辑4/19/2012 @美国东部时间上午8:56

EUREKA!我想到了。我的问题真是太愚蠢了。我的Page_Load()事件上有一个IF语句,用于检查是否存在IsPostBack。如果IsPostPack = False,我只在RADAjaxManager上注册AjaxSettings。我没有意识到RADAjaxManager正在每个PostBack上重新创建,因此我丢失了所有的AjaxSettings,所以我移动了在IF语句之外进行AjaxSettings注册的方法,因此它总是在每个页面加载时运行,并且voilà !它奏效了!

1)我测试了“分组”功能,但它确实有效...当我拖动一列时,你不会“看到”被拖动的琴柱。当你拖动列时,你看到的只是一个“十字准线”光标。在演示中,当您开始拖动其中包含列名称的框时,您将看到“拖放”功能的视觉体验。我如何获得相同的功能?有人知道吗?

1 个答案:

答案 0 :(得分:1)

如果您将模块控件标记为“支持部分渲染”,DNN会将您的模块包装在RadAjaxPanel中。这绝对是最简单的方法,并且最符合框架提供/期望的内容。

如果您不希望在回发期间页面变灰,您只需要调整样式(可能在门户/皮肤级别,以确保整个站点的一致性)。因此,如果您的皮肤使用ID MySkin包裹整个网站,您可以使用此CSS更改更新进度显示的样式:

#MySkin .RadAjax .raTransp {display:none;}

更新

要让更新进度指示器仅显示在网格上,请尝试使用RadAjaxManagerRadAjaxLoadingPanel的组合作为demos;类似的东西:

<telerik:RadAjaxManager runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadGrid1">
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" />
            </UpdatedControls>
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" />