DataSet ds = ast.GetUserLoginInfo(Param);
foreach (DataRow dr in ds.Tables[0].Rows)
{
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
_userstate.ID = Convert.ToInt32(ds.Tables[0].Rows[0]["ID"]);
_userstate.Name = Convert.ToString(ds.Tables[0].Rows[0]["Name"]).Trim();
_userstate.Email = Convert.ToString(ds.Tables[0].Rows[0]["Email"]).Trim();
_userstate.Username = Convert.ToString(ds.Tables[0].Rows[0]["Username"]).Trim();
_userstate.GroupId = Convert.ToInt32(ds.Tables[0].Rows[0]["GroupId"]);
_userstate.BranchId = Convert.ToInt32(ds.Tables[0].Rows[0]["BranchId"]);
_userstate.BranchId = Convert.ToInt32(ds.Tables[0].Rows[0]["DeptId"]);
_userstate.RoleId = Convert.ToInt32(ds.Tables[0].Rows[0]["RoleId"]);
_userstate.IsActive = Convert.ToBoolean(ds.Tables[0].Rows[0]["IsActive"]);
_siteuser.UserStat = _userstate;
}
对于某些用户,BranchId为null,因为它们是头部,所有分支都在它们之下。因此,当用户登录时,数据库会返回数据集中的非内容。
答案 0 :(得分:0)
将此代码用于所有字段
_userstate.ID = Convert.ToInt32(ds.Tables[0].Rows[0]["ID"] == null ? 0 : ds.Tables[0].Rows[0]["ID"]);
_userstate.Name = Convert.ToString(ds.Tables[0].Rows[0]["Name"] == null ? "" ds.Tables[0].Rows[0]["Name"] ).Trim();
答案 1 :(得分:0)
由于branchId可以为空,因此ConvertToInt32会抛出异常。试试这个。
int.TryParse(ds.Tables[0].Rows[0]["BranchId", _userstate.BranchId)