2013-10-25 53 views
1

我想通过Web服务从存储过程从LINQ到SQL返回。然而,当我不应该的时候,我总是得到一个空结果。我不知道什么是错的。当我尝试通过Linq to SQL直接调用存储过程时,我能够成功地将结果绑定回GridView。通过Linq获取存储过程中的空值

但是当我尝试下面的代码,它不工作:

实际.aspx.cs:

protected void LoginUsrBtn_Click(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    dt.Columns.Add("Id"); 
    dt.Columns.Add("Admin"); 
    dt.Columns.Add("Name"); 

    try 
    { 
     using (CustomWebService cws = new CustomWebService()){ 
      dt.Rows.Add(cws.LogInFunction("Ron", "5456")); 
     } 
    } 
    catch 
    { 
     Label1.Text = "Error"; 
    } 
} 

Web服务:

{ 
    DataTable dbtable = new DataTable(); 
    dbtable.Columns.Add("Id"); 
    dbtable.Columns.Add("Admin"); 
    dbtable.Columns.Add("Name"); 
    DataClassesDataContext dbcontext = new DataClassesDataContext(); 

    var query = (dbcontext.UserLogin(username, password)).SingleOrDefault(); 

    //returns data correctly 
    if (query != null) 
    { 
     try 
     { 
       **//WHERE THE DATA DISAPPEARS:** 
       dbtable.Rows.Add(query.Id, query.Admin, query.Name); 
       return dbtable; 
     } 
     catch (Exception) 
     { 
      dbtable.Rows.Add(0, 0, 0); 
      return dbtable; 
     } 

    } 
    return dbtable; 
} 
+0

你介意你的移动解决方案,一个答案?回答你自己的问题是可以的。 –

+0

我最初尝试过,但我没有足够的声望来这样做。好像我现在可以这样做 – Jos

回答

2

我设法通过改变来修复它(actual .aspx.cs)

dt.Rows.Add(cws.LogInFunction("Ron", "5456")); 

到:

dt = (cws.LoginFunction("Ron", "5456")); 

,并与将其通过该表行之前还初始化布尔值管理员:

bool initializedAdmin = (query.Admin.HasValue) 
          ? query.Admin.Value 
          : false; 
dbtable.Rows.Add(query.Id, initializedAdmin, query.Name);