-1

我在 C# 应用程序中工作,我有一个dataGridViewX1名为Birthday索引号 [3] 的列。

我想在运行时添加一个新列以使用索引号 [17]dataGridViewX1调用。Age

我如何计算年龄并将其放在列中Age。我做了这段代码,但错误出现在我面前并说

无法添加列,因为其 CellType 属性为空。

CellType 是 (gets) 不是 Gets 或 Sets。我不能给它一个价值,如下所示。

col.CellType = typeof(int x)

这是我的代码:

DataGridViewColumn col = new DataGridViewColumn();
col.HeaderText = "Age";
col.Name = "ageBoD";
int colIndex = dataGridViewX1.Columns.Add(col);

DateTime brithday;
for (int i = 0; i < dataGridViewX1.Rows.Count; i++)
{
    brithday = (DateTime)dataGridViewX1[3, i].Value;
    TimeSpan age = DateTime.Now - brithday;
    dataGridViewX1[17, i].Value = age.Days / 365;
}

如果我执行此代码:

        DataGridViewColumn col = new DataGridViewTextBoxColumn();//This only has been changed.
        col.HeaderText = "Age";
        col.Name = "ageBoD";
        int colIndex = dataGridViewX1.Columns.Add(col);

        DateTime brithday;
        for (int i = 0; i < dataGridViewX1.Rows.Count; i++)
        {
            brithday = (DateTime)dataGridViewX1[3, i].Value;
            TimeSpan age = DateTime.Now - brithday;
            dataGridViewX1[17, i].Value = age.Days / 365;

        }

错误隐藏消失了,并且该列已成功添加。但是出现了另一个问题,即该列中没有数据。

4

2 回答 2

0

试试这对我有用

            DateTime brithday;
            DataGridViewColumn col = new DataGridViewColumn();
            col.HeaderText = "Age";
            col.Name = "ageBoD";
            col.CellTemplate = new DataGridViewTextBoxCell();
            int column = dataGridViewX1.Columns.Count;
            dataGridViewX1.Columns.Insert(column, col);

            for (int i = 0; i < dataGridViewX1.Rows.Count; i++)
            {
                brithday = Convert.ToDateTime(dataGridViewX1[3, i].Value);
                dataGridViewX1[column, i].Value = brithday.Year - DateTime.Now.Year;
            }
于 2013-10-29T20:55:26.590 回答
0

您可以使用as 数据类型创建Team_Age在数据库中调用的新列。int

现在,我们将在运行时计算年龄,而不将数据插入数据库。

第一步创建一个可以在 GridView 中显示数据的函数,如

    public void showTeam()
    {
        //getting data from database and show it in GridView
        SqlCommand com = new SqlCommand("SELECT [Team_ID],[Team_Age],[Team_Birthday]", con);
        SqlDataAdapter da = new SqlDataAdapter();
        DataSet dats = new DataSet();
        da.SelectCommand = com;
        da.Fill(dats, "Team_Info");
        dataGridViewX1.DataSource = dats.Tables["Team_Info"];
        //the caculation start from here
        DateTime brithday;
        for (int i = 0; i < dataGridViewX1.Rows.Count; i++)
        {
            brithday = (DateTime)dataGridViewX1[2, i].Value;
            TimeSpan age = DateTime.Today - brithday;
            dataGridViewX1[1, i].Value = age.Days / 365;
        }
    }

现在,只需调用如下函数showTeam()

    public TeamInfoForm()
    {
        InitializeComponent();
        showTeam();           
    }
于 2013-10-30T02:50:21.883 回答