【发布时间】:2013-11-29 08:51:00
【问题描述】:
我在 DotNetNuke CMS 中创建模块。我不需要编辑我的数据,只需显示 带有排序和分页。有 asp:GridView 控件,其中有 DataTable 作为数据源。在 Page_Load 事件中,一些带有数据的行被添加到 dataTable 和 正确显示。排序和分页也可以。在 GridView 中维护数据 (并出于排序目的)使用 ViewState。我选择不使用 ViewState 服务器过载,传入的数据不一定是安全的。对于传入数据 我使用 SignalR,所以 javascript 函数从服务器(集线器)接收数据。 发现我将从 javascript web 方法(C#)AddNewRowToDataTable 调用 (DateTime 时间、字符串名称、双精度值...)将参数传递给方法。 不幸的是 web 方法必须是静态的,这就是为什么 ViewState 可以 不能用在里面。因此,如果我在添加新行时不能使用 ViewState,我会丢失所有数据。 这没有帮助:
[WebMethod]
public static void AddNewRowToDataTable(DateTime time, string name, double value)
{
Page page = HttpContext.Current.Handler as Page;
if (page != null)
{
if (page.ViewState["dtValues"] != null)
{
// Get the DataTable from ViewState and inserting new data to it.
DataTable dtValues = (DataTable)page.ViewState["dtValues"];
// Add the new row.
dtValues.Rows.Add(new object[] { time, name, value });
// Rebind the GridView control to show inserted data.
BindGridView();
}
}
}
错误无法访问受保护的成员“System.Web.UI.Control.ViewState” 通过“System.Web.UI.Page”类型的限定符;限定词必须是 'Christoc.Modules.DNNSignalR.View' 类型(或派生自它)
我宁愿不使用 Session 来维护数据,因为不想在服务器端造成繁重的负载。
什么是满足我要求的最佳方法:在 Asp Net、DotNetNuke 模块中,显示数据 来自具有排序和分页功能的 SignalR,在回发时不会丢失数据?
【问题讨论】:
标签: c# javascript asp.net signalr viewstate