在一个页面中,我有一些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}}公共方法。但是我们都知道改变老板心态是多么困难。嗯,这可能是我遇到困难的原因之一。)
答案 0 :(得分:1)
这是您可能已经导致它的已知错误,或者您可能未在下面查看如何修复它。如果您仍需要再次发布帮助,我可以提供更多信息。
答案 1 :(得分:1)
我已经在@VigneshKumar的帮助下解决了这个问题并且谷歌搜索了一点。
事情是UpdatePanel和GridView隐藏了Asp.Net试图给我的错误消息。在引擎盖下,由于在Page_Load方法中跳过了一些代码,因此发生了一些NullReferenceException。好像异步回发忽略了Page_Load(如果我错了,请有人纠正我)。
经过一些谷歌搜索,我发现了禁用ToolkitScriptManager
的{{1}}的建议。这导致页面显示一个完整的错误消息,所以我可以看到NullReferenceException以及导致它的原因。
感谢您的帮助,问题解决了。