4

自動Increamentプロパティを持つデータ列を持つDataTableに行を追加したいと思います。

DataTable tblproduct = new DataTable();

DataColumn CartItemId = new DataColumn();
CartItemId.ColumnName = "CartItemId";
CartItemId.DataType = System.Type.GetType("System.Int32");
CartItemId.AutoIncrement = true;
CartItemId.AutoIncrementSeed = 1;
CartItemId.AutoIncrementStep = 1;
CartItemId.ReadOnly = true;
CartItemId.Unique = true;

tblproduct.Columns.Add(CartItemId);
tblproduct.Columns.Add("CampaignId", typeof(int));
tblproduct.Columns.Add("SubCatId", typeof(int));
tblproduct.Columns.Add("Size", typeof(string));
tblproduct.Columns.Add("Qty", typeof(int));

tblproduct.Rows.Add(3, 345,"Hello", 1);
tblproduct.Rows.Add(5, 3455,"Hecfghhgdfllo", 8);

Autoincreamented列に値を挿入したくありません。自動生成された値である必要がありますが、上記のコードは機能しませんでした。

4

1 に答える 1

6

行を追加するときは、次のようなものを試してください

        DataRow dr = tblproduct.NewRow();
        dr["CampaignId"] = 3;
        dr["SubCatId"] = 345;
        dr["Size"] = "Hello";
        dr["Qty"] = 1;
        tblproduct.Rows.Add(dr);

DataColumn.AutoIncrementプロパティからも

DataRowクラスのItemArrayプロパティを使用して新しい行を作成し、値の配列を渡すことができます。AutoIncrementがtrueに設定されている列では、値が自動的に生成されるため、これは潜在的な問題です。ItemArrayプロパティを使用するには、配列内の列の位置にnullを配置します。

コードを次のようなものに変更します

        tblproduct.Rows.Add(null,3, 345, "Hello", 1);
        tblproduct.Rows.Add(null,5, 3455, "Hecfghhgdfllo", 8); 
于 2012-08-30T05:43:00.040 に答える