如果是使用winform的朋友開發時
一般若要呈現明細資料,都是用gridview呈現
但若要即時呈現明細的流水號時,可以使用下列方式來抓取,因為當使用者會畫面上新增、刪除,修改時
會異動到流水號,那要怎麼確保資料流水號不會發生問題呢?
我使用linq的max方法
#region 取明細最大號
public static class GetMaxitemno
{
public static int Maxitemno(DataSet dsdetail)
{
int maxitemno = 0;
int newID = 1;
if (dsdetail.Tables[0].Rows.Count > 0)
{
try
{
var tst = (from x in dsdetail.Tables[0].AsEnumerable()
where x.RowState != DataRowState.Deleted
select x["itemno"]).Max();
newID = Convert.ToInt32(tst) + 1;
maxitemno = newID;
}
catch
{
newID = maxitemno + 1;
}
}
return newID;
}
}
#endregion
可以看到有一個x.RowState != DataRowState.Deleted
這個在winform的gridview連資料集時,會有這個問題,若不過濾掉直接下max取最大號時,程式會掛掉
所以如果想要用linq的方式取資料集中的最大號時,記得要加上這個條件過濾掉!
分享給需要的人囉!
留言列表