如果是使用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的方式取資料集中的最大號時,記得要加上這個條件過濾掉!

分享給需要的人囉!


丫德 發表在 痞客邦 PIXNET 留言(0) 人氣()