-1

私は C# アプリケーションで作業しています。インデックス番号 [3] でdataGridViewX1呼び出される列を持つ があります。Birthday

実行時にインデックス番号でdataGridViewX1呼び出される新しい列を追加したい[17]。Age

年齢を計算して列に入れるにはどうすればよいですかAge。私はこのコードを実行しましたが、エラーが表示され、

CellType プロパティが null であるため、列を追加できません。

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

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 に答える