填充时GridView“杀死”页面 - PageRequestManagerServerErrorException

时间:2013-12-15 21:04:55

标签: c# asp.net gridview webforms

在一个页面中,我有一些GridView。其中一个是非常烦恼我。虽然所有GridView都按预期工作,但这个特定的一个“杀死”了一次填充除了空列表之外的所有页面的行为。

例如:

MyGridView.DataSource = new object[] { }; // works
MyGridView.DataSource = new List<MyObject> { }; // works
MyGridView.DataSource = new List<MyObject> { new MyObject() }; // bugs up

每当列表“填充”时, PostBack的任何内容都会将其打印到浏览器的控制台:

Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: (...)

我已经尝试将其设置为List<object>,并且正如预期的那样,它失败了(因为它缺少数据绑定所需的字段)。我现在不知道如何解决这个问题。

更新:如果有帮助,假设MyObject的结构看起来像

public int Id { get; set; }
public int GridId { get; set; } // the line Id in the GridView
public string Description { get; set; }
public DateTime ActionDate { get; set; }

public OtherObjectId { get; set; }
public OtherObject { get; set; }

我被迫遵循我的老板所遵循的旧模式,其中我们的模型分为Value Object和Business Object类。请参阅下面的说明,了解我对此的看法。关键是,在GridView中,我需要对OtherObject.YetOtherObject.Name的引用。这是一个问题吗?

再次更新:完整的错误消息包含字符串“对象引用未设置为对象的实例”。注册“填充”GridView以进行同步PostBack的按钮不起作用。

(旁注:恕我直言,他做得很差,并且失去了很多C#和.NET的优点,其中一个是默认构造函数 - 他强迫我保护它并用{{替换它} 1}}公共方法。但是我们都知道改变老板心态是多么困难。嗯,这可能是我遇到困难的原因之一。)

2 个答案:

答案 0 :(得分:1)

这是您可能已经导致它的已知错误,或者您可能未在下面查看如何修复它。如果您仍需要再次发布帮助,我可以提供更多信息。

http://weblogs.asp.net/leftslipper/archive/2007/02/26/sys-webforms-pagerequestmanagerparsererrorexception-what-it-is-and-how-to-avoid-it.aspx

答案 1 :(得分:1)

我已经在@VigneshKumar的帮助下解决了这个问题并且谷歌搜索了一点。

事情是UpdatePanel和GridView隐藏了Asp.Net试图给我的错误消息。在引擎盖下,由于在Page_Load方法中跳过了一些代码,因此发生了一些NullReferenceException。好像异步回发忽略了Page_Load(如果我错了,请有人纠正我)。

经过一些谷歌搜索,我发现了禁用ToolkitScriptManager的{​​{1}}的建议。这导致页面显示一个完整的错误消息,所以我可以看到NullReferenceException以及导致它的原因。

感谢您的帮助,问题解决了。