有以下DAL層方法:
/// <summary>
/// 對賬號執行鎖定或解鎖
/// </summary>
/// <param name="Locked">鎖定狀態</param>
/// <param name="logno">登錄賬號</param>
/// <param name="loginName">鎖定者</param>
/// <returns></returns>
public static bool ExecUserLocked(bool Locked, string logno, string loginName = null)
{
try
{
int result = 0;
using(CusProContext db = new CusProContext())
{
if (Locked)
{
if (db.SysUser.Any())
{
SysUser userobj = db.SysUser.First(a => a.Logno == logno);
userobj.Locked = Locked;
userobj.Lockman = loginName;
userobj.Lockdate = DateTime.Now;
}
}
else
{
if (db.SysUser.Any())
{
SysUser userobj = db.SysUser.First(a => a.Logno == logno);
userobj.Locked = Locked;
userobj.Lockman = "";
userobj.Lockdate = null;
}
}
result = db.SaveChanges();
}
return result != 0 ? true : false;
}
catch(Exception ex)
{
throw ex;
}
}
業務應用層呼叫邏輯是這樣的:
public static string _logno, _userna; //GridControl選中行中的兩個值
/// <summary>
/// 鎖定賬號
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BarToggleSwitch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (_logno == string.Empty || _userna == string.Empty)
{
MessageDxUtil.ShowTips("未選擇要鎖定的賬號,請重新選擇!");
return;
}
//賬號鎖定
if (BarToggleSwitch.Checked)
{
if (MessageDxUtil.ShowYesNoAndTips("確定要鎖定【" + _userna + "】賬號嗎?") == DialogResult.OK)
{
ContextHelper.ExecUserLocked(true, _logno, Portal.gc.UserInfo.Logno);
MessageDxUtil.ShowTips("賬號鎖定成功!");
}
}
else
{
ContextHelper.ExecUserLocked(false, _logno, null);
MessageDxUtil.ShowTips("賬號解鎖成功!");
}
//多載資料源
InitData();
}
現在的問題是,if條件的更新寫入,是無效的。而else的寫入方法是正常的。通過SQL Server Profiler跟蹤的結果。
我一直跟蹤SysUser物體,其中Locked是bool?型別值,而資料庫是byte型別,只為0(假)、1(真)。感覺是這里的問題,不知道是不是,還請大神指導一下。
uj5u.com熱心網友回復:
問題原因找到了,不是方法寫的有問題。而是DevExpress加這句補丁:
//界面漢化
//Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-Hans");
直接導致:
if (MessageDxUtil.ShowYesNoCancelAndTips("確定要鎖定【" + _userna + "】賬號嗎?") == DialogResult.Yes)
居然不進入if,我去。哪位大神了解這個毛病。
uj5u.com熱心網友回復:
優化一下吧,圖一太啰嗦了,用 FirstOrDefault(); 方法去查 然后判斷非空 , 用 First 的話 查詢不到會拋例外的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/267634.html
標籤:C#
上一篇:C#如何從登錄之后的網頁獲取資料
