且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在数据网格视图中获取当前单元格的上下单元格值

更新时间:2023-01-25 10:15:57


您需要 编写逻辑 用于验证日期 喜欢.


void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DateTime StartDate = dataGridView1.Rows[0].Cells["Date"];
DateTime EndDate = dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells["Date"]
DateTime enetedDate = dataGridView1.Rows[e.RowIndex].Cells["Date"];
 
if( enetedDate >=  StartDate &&  enetedDate<= EndDate)
{
//Your logic should be here..
} 
else
{
 MessageBox.Show("Invalid Date!");
  e.Cancel = true;
}
}



注意:

Please use DataType conversion before use. because i haven''t implemented it.


是.你可以做到的.
您需要获得 Gridview1_cellLeave 事件的帮助,并在其下编写代码.
例如
 gridview1_CellLeave()
{
 // 收集datetime对象中的所有单元格值进行比较
 DataTime dtUpperCell = e.gridview1.Rows [RowIndex- 1 ].Text;
 DataTime dtLowerCell = e.gridview1.Rows [RowIndex +  1 ].Text;
 DataTime dtCurrentCell = e.gridview1.Rows [RowIndex +  1 ].Text;

  如果(dtUpperCell >  dtCurrentCell& dtLowerCell < ;  dtCurrentCell)// 检查条件
  {
     MessageBox.Show(" ); // 显示消息
  }
} 


首先,您必须触发gridviewrowdatabound事件及其内部.
标签日期=(标签)e.Row.FindControl(" );
 DateTime r = Convert.ToDateTime(date.Text)
DateTime r1 = Convert.ToDateTime(" );
DateTime r1 = Convert.ToDateTime(" );
                如果(DateTime.Compare(r,r2)><  =  0 )
                {
                    不能' 不能更改
                }
                别的
                {
                    你可以改变
                }
               如果(DateTime.Compare(r,r2)> = 0)
                {
                    不能更改
                }
                其他
                {
                    你可以改变
                } 


i have a data grid view which contain two columns.
e.g.

date day
1/1/2005 Monday
7/1/2005 Monday
14/1/2005 Monday
21/1/2005 Monday
28/1/2005 Monday
5/2/2005 Monday
12/2/2005 Monday
19/2/2005 Monday
26/2/2005 Monday

i want to validate user in such way that he can change date(let 7/1/2005 )but not less or = than 1/1/2005 (upper cell) and not more than or =14/1/2005 (lowercell)
please friend if u have any idea please help me.
can anybody help me how to get upper and lower cell value of current cell ?

thanks in advanced
lakhan

Hi,

You need to write a logic for validating Date like.


void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
DateTime StartDate = dataGridView1.Rows[0].Cells["Date"];
DateTime EndDate = dataGridView1.Rows[dataGridView1.Rows.Count-1].Cells["Date"]
DateTime enetedDate = dataGridView1.Rows[e.RowIndex].Cells["Date"];
 
if( enetedDate >=  StartDate &&  enetedDate<= EndDate)
{
//Your logic should be here..
} 
else
{
 MessageBox.Show("Invalid Date!");
  e.Cancel = true;
}
}



Note:

Please use DataType conversion before use. because i haven''t implemented it.


Yes. you can do it.
you need to take help of Gridview1_cellLeave event and write code under it.
e.g.
gridview1_CellLeave()
{
 // collect all cell values in datetime object to compare
 DataTime dtUpperCell = e.gridview1.Rows[RowIndex - 1].Text;
 DataTime dtLowerCell = e.gridview1.Rows[RowIndex + 1].Text;
 DataTime dtCurrentCell = e.gridview1.Rows[RowIndex + 1].Text;

  if(dtUpperCell > dtCurrentCell && dtLowerCell < dtCurrentCell) //check condition
  {
     MessageBox.Show("Not allowed"); //show message
  }
}


1st u have to fire gridviewrowdatabound event and inside that.
Label date= (Label)e.Row.FindControl("Date");
 DateTime r =    Convert.ToDateTime(date.Text)            
DateTime r1=Convert.ToDateTime("1/1/2005");
DateTime r1=Convert.ToDateTime("14/1/2005");
                if (DateTime.Compare(r, r2) <= 0)
                {
                    can't change
                }
                else
                {
                    you can change
                }
               if (DateTime.Compare(r, r2) >= 0)
                {
                    can't change
                }
                else
                {
                    you can change
                }