PDA

View Full Version : افزودن DataRow به DataTable



dr_csharp
چهارشنبه 17 مهر 1387, 21:29 عصر
سلام
چطور میتونم در DataTable با فیلد Identity, و PrimaryKey رکورد اضافه کنم ؟



DataSet DataSet = new DataSet("Shop");
DataTable customer = new DataTable("Customer");
DataColumn id = new DataColumn("Id", typeof(int));
id.AutoIncrement = true;
id.AutoIncrementSeed = 1;
id.AutoIncrementStep = 1;
DataColumn name = new DataColumn("Name", typeof(string));
DataColumn family = new DataColumn("Family", typeof(string));
customer.Columns.AddRange(new DataColumn[]{id,

name,
family}
);
customer.PrimaryKey = new DataColumn[] { id };
DataSet.Tables.Add(customer);


الان وقتی رکورد اضافه میکنم ،برای رکورد دوم Error میده که :

Column 'Id' is constrained to be unique. Value '1' is already present
درحالیکه فیلد Id خودش باید مقدار بگیره

razavi_university
پنج شنبه 18 مهر 1387, 02:29 صبح
چرا ستون ها را می سازید و از متد newrow جدولتان استفاده نمی کنین؟
برای ستونهایی که خود مقدارشان را ایجاد میکنند(مثل identity ) نیازی به نوشتن آنها نیست


DataRow dr;
DataTable dt = new DataTable("Class");
dr = dt.NewRow();

dr.BeginEdit();

dr["clsname"] = txtName.Text;
dr["clscomment"] = txtComment.Text;

dr.EndEdit();

dt.Rows.Add(dr);

dr_csharp
پنج شنبه 18 مهر 1387, 08:06 صبح
چرا ستون ها را می سازید و از متد newrow جدولتان استفاده نمی کنین؟
برای ستونهایی که خود مقدارشان را ایجاد میکنند(مثل identity ) نیازی به نوشتن آنها نیست


DataRow dr;
DataTable dt = new DataTable("Class");
dr = dt.NewRow();

dr.BeginEdit();

dr["clsname"] = txtName.Text;
dr["clscomment"] = txtComment.Text;

dr.EndEdit();

dt.Rows.Add(dr);


منم همین کارو میکنم ولی Error میده :


DataRow dataRow = customer.NewRow();

dataRow.ItemArray = newobject[] {name,family };
dataRow.BeginEdit();
customer.Rows.Add(dataRow);
dataRow.EndEdit();

البته اگه با روش شما به columnها مقدار بدیم OK هست..ولی یادمه قبلا با همین روشی که نوشتم به Row مدار میدادم !؟

razavi_university
پنج شنبه 18 مهر 1387, 12:04 عصر
درست می فرمایید
من قراموش کردم بگم که قبل از اینکه بتونین NewRow از Table بگیرین باید اون رو Fill کنین و برای اینکه خصوصیات Table هم بیاد FillSchema رو باید قبلش استفاده کنین.

البته اگز از Dataset و ویزاردهای اون استفاه کنید می تونین از حالت Typed استفاده کنین که تقریبا ساده تره
اگر نحوه کارتون برای درج و حذف و ... بفرمایید بهتر میشه راهنمایی کرد