代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_C#

四个小疑点

发布时间:2019-09-19浏览(838)

    四个小问题
    1.Datagridview中当用户输入值移到下一个单元格的时候,程序里会判断用户输入值的正确与否,当用户输入错误时,怎样让焦点还是停留在当前单元格中(就是一定要到用户输入正确后才允许移到其他单元格)?

    2.c#中怎样得到当前星期的星期一的日期?

    3.怎样判断用户在datagridview单元格里输入的值是整形?是decimal?

    4.讨论:datagridview中用户需要输入100行数据(每行20列),其中有一列每次输入的数据都会从数据库的表里判断输入正确与否,这个数据库的connection是永远open,知道用户全部输入完毕后再close好,还是每次输入那列的时候open,然后close,等输第二行的时候再重复open,close好,哪一种好?

    ------解决方案--------------------
    1,在CellEndEdit,或者CellEnter事件中设置此次焦点的位置在哪行哪列,然后在CellLeave事件中,再判断是否满足条件,如果不满足,就把开始存的那两个数据(i,j):this.dataGridView1.Rows[i].Cells[j].Selected = true;应该就可以回到当前单元格中了。
    ------解决方案--------------------
    3,可以通过正则来判断.
    4,我认为是一直打开好.

    ------解决方案--------------------
    3,在DataError事件中,写入:
    C# code
     
          if (!DBNull.Value.Equals(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value))
          {
            if (!Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value))
            {
              MessageBox.Show("请输入数字");
              this.ActiveControl.Text = string.Empty;
              this.ActiveControl.Focus();
            }
          }
          else
          {
            MessageBox.Show("请输入数字");
            this.ActiveControl.Text = string.Empty;
            this.ActiveControl.Focus();
          }

    ------解决方案--------------------
    同时,如果第三点知道了,那么第一点就有点多余了。
    ------解决方案--------------------
    问题2 
    DateTime.Now.AddDays(0 - DateTime.Now.DayOfWeek+1).ToString("yyyy-MM-dd");
    ------解决方案--------------------
    问题4,需要时打开用完关闭比较好。
    ------解决方案--------------------
    整形数字检查正则表达式/^[-\+]?\d+$/
    浮点检查^(\-|\+)?[\d]{1,10}\.[\d]{1,10}$
    ------解决方案--------------------
    1/
    http://blog.csdn.net/fangxinggood/archive/2007/04/11/1561011.aspx#TOP
    http://blog.csdn.net/fangxinggood/archive/2007/10/12/1821425.aspx
    http://luyu.cnblogs.com/archive/2005/11/25/DataGridView.html
    2/
    static void Main(string[] args)
    {
    DateTime dt = DateTime.Now.AddDays(0 - DateTime.Now.DayOfWeek + 1);

    Console.WriteLine(dt.ToShortDateString());

    Console.ReadLine();
    }
    3/

    4/
    要看你的输入的连续性强不强,不强的话就要输完一行就关闭吧
    强的话就可以全部输完在关闭
    ------解决方案--------------------
    4 用数据库连接池解决,每次验证时连接,用完马上关闭.
    ------解决方案--------------------
    4.只要读到内存中.什么时候关闭都可以.需要保存的时候,只要在内存中修改打开更新就好了.
    ------解决方案--------------------
    4:都不好,查询好了就关闭数据库,数据放到你的类中,