1

我正在尝试通过 Web 服务从 LINQ 到 SQL 的存储过程中获得返回。但是,当我不应该得到空结果时,我一直在返回。我不确定出了什么问题。当我尝试直接通过 Linq to SQL 调用存储过程时,我能够成功地将结果绑定回 GridView。

但是当我尝试以下代码时,它不起作用:

实际.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";
    }
}

网络服务:

  {
    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;
}
4

1 回答 1

2

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

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

至:

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

并且还要在将布尔值 Admin 值通过表格行之前对其进行初始化:

bool initializedAdmin = (query.Admin.HasValue) 
                            ? query.Admin.Value 
                            : false;
dbtable.Rows.Add(query.Id, initializedAdmin, query.Name);
于 2013-10-29T08:28:29.053 回答