日期:2014-05-18  浏览次数:20850 次

四个小问题
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:都不好,查询好了就关闭数据库,数据放到你的类中,