2011-01-25 89 views
1

如果我有一个返回一个DataGridView的方法和流程与此类似:C#从方法返回类型

if (ds.Tables.Count == 0) 
     { 
      SharedMethods.updateStatus("There are no excluded results to display"); 
      //return dgv; 
     } 
     else 
     { 
      dgv.DataSource = ds.Tables[0]; 
      dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 
      dgv.AllowUserToAddRows = false; 

      return dgv; 
     } 

如果if条件为真,那么我不想返回一个DataGridView(如没有数据),在这种情况下我能返回什么?如果我返回null,那么调用方法有一个空的datagridview,导致后面的问题。

谢谢。

+0

如果你想返回任何内容或数据库,请不要将它用作数据库方法。只是使其无效,并填补了一般财产或不。 – 2011-01-25 10:41:28

+2

无论如何,您都应该在调用代码中处理它。这是正确的。 – 2011-01-25 10:42:10

回答

1

只要将网格的Visible属性设置为false,如果您没有任何可显示内容。

2

可以

  1. 抛出一个异常
  2. null并添加特殊情况处理的null给调用者
  3. 如果DataGridView的支持的话,空单

您通常使用3 )与IEnumerables<T>,但我不知道你的返回类型是否支持它。如果您希望在第一种情况下您的行为方式与您的查询没有结果相同,则此解决方案最为合适。

0

我看到它的方式有两种解决方法:

  1. 返回一个空DataGridView,并与修改调用代码。

  2. 返回DataGridView但空DataSource(因为没有数据),并确保您的调用代码可以与应对。

个人而言,我会跟2.去你仍然有视图但没有数据,所以你仍然需要一个DataGridView,但它是空的。

0

我不会从数据绑定方法返回任何东西。你为什么需要这个? (这段代码甚至不会编译,因为真正的块没有任何返回。)

简单地使它成为一种方法。

2

您可以设置方法的返回类型以返回错误代码(enum),并将DataGridView设置为outref参数。