private void dataview_CellValidated(object sender, DataGridViewCellEventArgs e)
        {
            if (dataview.Rows[e.RowIndex].IsNewRow)
            {
                return;
            }

            DataGridViewCell cell = GetCell(e.RowIndex, e.ColumnIndex);

            if (cell.ErrorText == string.Empty)//表示驗證沒有通過。
            {
                string columnName = GetColumnName(cell);

                if (columnName == "StartTime" || columnName == "EndTime")
                {
                    if ((cell.Value + string.Empty) != string.Empty)
                    {
                        PaddingMethod method = (columnName == "StartTime" ? PaddingMethod.First : PaddingMethod.Last);

                        DateTime?dt = DateTimeHelper.ParseGregorian(cell.Value + string.Empty, method);
                        cell.Value = dt.Value.ToString(Consts.TimeFormat);
                    }
                }
            }

            ShowDirtyStatus();
        }
예제 #2
0
        /// <summary>
        /// 將日期當作是「西元」年處理。
        /// </summary>
        /// <param name="dtString">日期字串。 </param>
        /// <param name="method">如果日期缺少的欄位用何種方式補上。</param>
        /// <returns></returns>
        public static DateTime? ParseGregorian(string dtString, PaddingMethod method)
        {
            PatternMatcher matcher = new PatternMatcher(dtString.Trim());

            if (!matcher.IsSuccess)
                return null;
            else
            {
                string assembly;

                if (method == PaddingMethod.None)
                {
                    foreach (Group each in matcher.EachGroup())
                        if (!each.Success) return null;

                    assembly = matcher.GetReassemblyString();
                }
                else
                {
                    int year, month, day, hour, minute, second;
                    DateTimePaddingInfo padding = new DateTimePaddingInfo(method);

                    ExtractInfo(matcher, padding, out year, out month, out day, out hour, out minute, out second);

                    assembly = year + "/" + month + "/" + day + " " + hour + ":" + minute + ":" + second;
                }

                DateTime result;
                if (DateTime.TryParse(assembly, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None, out result))
                    return result;
                else
                    return null;
            }
        }
        //private void txtStartTime_Validated(object sender, EventArgs e)
        //{
        //    if (txtStartTime.Text != string.Empty)
        //        FormatDateTime(txtStartTime, PaddingMethod.First);

        //    CurrentItem.StartTime = txtStartTime.Text;

        //    ShowDirtyStatus();
        //}

        //private void txtEndTime_Validated(object sender, EventArgs e)
        //{
        //    if (txtEndTime.Text != string.Empty)
        //        FormatDateTime(txtEndTime, PaddingMethod.Last);

        //    CurrentItem.EndTime = txtEndTime.Text;

        //    ShowDirtyStatus();
        //}

        //private void cboScoreSource_SelectedIndexChanged(object sender, EventArgs e)
        //{
        //    if (CurrentItem == null) return;

        //    if (cboScoreSource.SelectedIndex == 0)
        //    {
        //        CurrentItem.AllowUpload = "是";
        //        txtStartTime.Enabled = true;
        //        txtEndTime.Enabled = true;
        //    }
        //    else
        //    {
        //        CurrentItem.AllowUpload = "否";
        //        txtStartTime.Enabled = false;
        //        txtEndTime.Enabled = false;
        //    }

        //    ShowDirtyStatus();
        //}

        private void FormatDateTime(TextBoxX textbox, PaddingMethod method)
        {
            if (_errors.GetError(textbox) == string.Empty)
            {
                DateTime?dt = DateTimeHelper.ParseGregorian(textbox.Text, method);
                textbox.Text = dt.Value.ToString(Consts.TimeFormat);
            }
        }
 private DateTime?GetDateTimeNullable(string txt, PaddingMethod method)
 {
     if (string.IsNullOrEmpty(txt))
     {
         return(null);
     }
     return(DateTimeHelper.ParseGregorian(txt, method));
 }
        //private void txtStartTime_Validating(object sender, CancelEventArgs e)
        //{
        //    ValidTextTime(txtStartTime, PaddingMethod.First);
        //}

        //private void txtEndTime_Validating(object sender, CancelEventArgs e)
        //{
        //    ValidTextTime(txtEndTime, PaddingMethod.Last);
        //}

        private void ValidTextTime(TextBoxX textbox, PaddingMethod method)
        {
            if (textbox.Text == string.Empty)
            {
                _errors.SetError(textbox, "");
            }
            else
            {
                DateTime?objStart = DateTimeHelper.ParseGregorian(textbox.Text, method);
                if (!objStart.HasValue)
                {
                    _errors.SetError(textbox, "您必須輸入合法的日期格式。");
                }
                else
                {
                    _errors.SetError(textbox, "");
                }
            }
        }
예제 #6
0
 public DateTimePaddingInfo(PaddingMethod method)
 {
     _method = method;
 }
예제 #7
0
 /// <summary>
 /// 將日期當作是「民國」年處理。
 /// </summary>
 /// <param name="dtString">日期字串。</param>
 /// <param name="method">如果日期中缺少的欄位用何種方式補上。</param>
 public static DateTime? ParseTaiwan(string dtString, PaddingMethod method)
 {
     throw new NotImplementedException("未實作。");
 }