c #datagridview搜索2 rowindex

时间:2018-03-12 20:09:48

标签: c# datagridview

enter image description here

enter image description here

我有一些问题

1:如何将日期时间转换为像20180125这样的简单数字

2:我有一个datagridview,其中一列是Date,例如我希望从2015/02/31到2017/02/31搜索其他列(年龄)的最大值

在我看来,首先我搜索datetime值并获取rowIndex,然后通过诸如290 - 350之类的rowinder搜索其他列(年龄)中的最大值,或许更好的方法?喜欢直接使用datetimes var 如果我的问题不清楚,我会提供更多信息

string rowdate = Convert.ToString(startofMonth); 


        DateTime dt = DateTime.ParseExact(rowdate, "yyyyMMdd", CultureInfo.InvariantCulture);
        String searchValue = "20180103"; //Datetime Example
        int rowIndex = -1;
        foreach (DataGridViewRow row in dgv.Rows)
        {
            if (row.Cells["date"].Value != null) // Need to check for null if new row is exposed
            {
                if (row.Cells["date"].Value.ToString().Equals(searchValue))
                {
                    rowIndex = row.Index;
                    break;
                }
            }
        }
        textBox1.Text = Convert.ToString(rowIndex); //Show in textbox
    }

1 个答案:

答案 0 :(得分:1)

1:如何将日期时间转换为20180125这样的简单数字 =>您可以使用.ToString("format")将DateTime转换为字符串     例如:

Console.Write(DateTime.Now.ToString("yyyyMMdd"));

2:您可以使用<比较2 DateTime个值。和>运营商

根据您的屏幕截图在3月13日更新。 您仍然需要进行验证和异常处理

            //set start and end date
            DateTime fromThisDate = new DateTime(2015, 02, 21, 0, 0, 0);
            DateTime toThisDate = new DateTime(2017, 02, 21, 0, 0, 0);

            int indexOfMaximumAge = -1;
            int currentMaximumAge = -1;

            foreach (DataGridViewRow row in dgv.Rows)
            {
                if (row.Cells[1].Value != null) // Need to check for null if new row is exposed
                {
                    //filter by date range
                    //convert
                    DateTime cellDate = Convert.ToDateTime(row.Cells[1].Value); 
                    if ((cellDate > fromThisDate) & (cellDate < toThisDate))
                    {
                        //find max
                        //convert
                        int cellAge = Convert.ToInt16(row.Cells[3].Value);
                        if (cellAge > currentMaximumAge)
                        {
                            currentMaximumAge = cellAge;
                            indexOfMaximumAge = row.Index;
                        }
                    }
                }
            }