你调用的对象是空的。在地方持有人

时间:2012-02-13 07:08:22

标签: c# asp.net gridview

我在

中发现了错误
ph = (PlaceHolder)row.FindControl("phs");

ASP.Net代码:

<PagerTemplate>
   <table>
     <tr>
       <td><asp:PlaceHolder ID="phs" runat="server"></asp:PlaceHolder></td>
     </tr>
   </table>
</PagerTemplate>

1 个答案:

答案 0 :(得分:0)

如果此行抛出异常:

ph = (PlaceHolder)row.FindControl("phs");

...那表明row为空。如果它不为null,那么即使方法调用返回null ,它也不应抛出异常。你可以抛出一个没有问题的空引用 1

因此,确定row是否可能以某种方式为null,并修复您的代码以使其不能,或在使用之前检查是否为空。


1 我能想到三种不起眼的选择,请注意:

  • row.FindRow实际上可以引用row中作为委托的字段或属性,但该委托为空
  • row.FindRow可以返回null,并且转换表达式可能正在执行一些抛出异常的用户定义的强制转换
  • 赋值可以是属性设置器调用,它抛出异常

只有第一个真的会该行抛出异常,请注意 - 我认为这是不可能的。