Ola tudo bem?
Bom isto na verdade entra num escopo de arquitetura do seu projeto.
Exemplo..
1 - U DataSet nunca vai vir com valor NULL ou seja, ele concerteza vai retornar um dataset VAZIO, pq no se vc tentar retornar um objeto que nao foi instanciado... ele vai dar uma exeção .. e exeção tem que ser tratada. Porém nao é o caso,se acontecer isto é erro de programa.. no minimo vc tem que instanciar o objeto dentro.
2- Para vc controlar as respostas do Webservice vc pode adotar uma padrao do tipo
Criar uma tabela que tem sempre uma linha.
<mensagemSaida>
<codSistema>WS</codSistema>
<sessionId>b0w0htrxio51glnbpr3zvgen</sessionId>
<codRetorno>0</codRetorno>
<descRetorno>Busca retornada com sucesso.</descRetorno>
</mensagemSaida>
Bom com esta estrutura vc sabe se vier codRetorno <>0 significa que aconteceu algum erro ou exeção ou aviso.. dai vc mostra a DescRetorno..
Caso venha 0, significa.. que ta tudo ok..
No caso da Listagem veio tudo ok.. porem nao veio valores nenhum
entao vc pega.. o retorno.. da tabelaClientes, exemplo..e faz verificação a abaixo
if(mensagemSaida.rows[0]["Cod_retorno"].ToString()=="0")
{
//verifica se veio valores
if( tabelaClientes.rows.Count >0)
{
dataGrid.DataSource = tabelaClientes;
dataGrid.DataBind();
}
}
else
{
//deu erro
this.lblErro.Text = mensagemSaida.rows[0]["descRetorno"].ToString();
}
Espero ter audado.