PDA

View Full Version : انتخاب یک رکورد جدید در گرید جانوس



fatemesoleimani
چهارشنبه 16 مهر 1393, 15:27 عصر
سلام دوستان

من تو فرم یه bindingnavigator گذاشتم ویه گرید جانوس هم گذاشتم این را هم بگم مثلا جدول گریدم 3 تا ستون داره که یکیش کلید اصلی هست که می خوام وقتی روی ایکن new تو bindingnavigator کلیک می کنم بیاد مقدار کلید اصلی تو گرید را یکی زیاد کنه و دو ستون دیگه را هم خودم دستی وارد کنم که مشکل اینجاست که کل ردیف را انتخاب نمی کنه یعنی
مقدار ستون کلید اصلی را اضافه می کنه و مقادیر دیگه جدول را هم وارد می کنم ولی بعدش باید حتما یک کلیک روی ردیف کنم و بعد دکمه save را بزنم در غیر اینصورت مقدار اخرین ستون
گریدم را 0 می زاره .
یه سوال دیگه هم داشتم اینه که ایا وقتی از گرید برای درج استفاده می کنیم دیگه نیازی به فرستادن مقادیر به بایندیگ نیست یعنی خودش می فرسته ؟ ولی الان اینجا من چون مقدار یکی از
ستون هاش را خودم از طریق یه متد دستی که تو دیتاست نوشتم بدست اوردم اگه میشه راهنمایی کنید ساعت ها وقتم را گرفته

با تشکر و سپاس فراوان

fatemesoleimani
پنج شنبه 17 مهر 1393, 19:30 عصر
newiconbinding:


try
{
fatemeBindingSource.AddNew();
codmax = Convert.ToInt32(fatemeTableAdapter.maxcode());
codmax = codmax + 1;
gridEX1.CurrentRow.Cells["code"].Value = codmax;
((DataRowView)fatemeBindingSource.Current).Row["code"] = codmax;
}
catch
{
MessageBox.Show("لطفا اطلاعات را وارد کنید");
}

and save iconbindingnavator:


private void toolStripButton1_Click(object sender, EventArgs e)
{
fatemeBindingSource.EndEdit();
fatemeTableAdapter.Update(this.baziDataSet1.fateme );
}

برای دوستون از گرید مقداری اضافه نمی کنه و فقط همون ستون کلید اصلی را مقدار می زاره چه طوری باید داده ها را asign کنم ؟

fatemesoleimani
پنج شنبه 17 مهر 1393, 19:41 عصر
private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) {
codemax = Convert.ToInt32(fatemeTableAdapter.maxcode());
codemax = codemax + 1;
editBox1.Text = codemax.ToString();
((DataRowView)fatemeBindingSource1.Current).Row["code"] = codemax; }

و برای ذخیره


private void toolStripButton1_Click(object sender, EventArgs e) {
int g, b;
g=Convert.ToInt32(gridEX1.CurrentRow.Cells["code_b"].Value);
b=Convert.ToInt32(gridEX1.CurrentRow.Cells["name"].Value) ;
((DataRowView)fatemeBindingSource1.Current).Row["code_b"] = g;
((DataRowView)fatemeBindingSource1.Current).Row["name"] = b;
this.Validate();
fatemeBindingSource1.EndEdit();
fatemeTableAdapter.Update(this.baziDataSet1.fateme ); }

در این صورت هم بعد از اینکه مقادیر یک رکورد را وارد کردم باید یک کلیک کنم تا کل رکورد انتخاب بشه که این اشتباهه بعد دکمه ذخیره را بزنم که در غیر اینصورت ستون اخر مقدار0 چاپ می کنه

و کلا می گن تو اضافه کردن رکورد به گرید جانوس اگه داده را درست asign کرده باشیم اشتباه هست که مقدار دهی کنیم که من نمیدونم یعنی چی ؟ از کسانی که کار کردن تقاضای کمک می کنم .

En_MK
پنج شنبه 17 مهر 1393, 23:07 عصر
امیدوارم بهتون ایده بده
http://stackoverflow.com/questions/7495500/janus-gridex-add-custom-row-and-select-a-specific-row

fatemesoleimani
پنج شنبه 17 مهر 1393, 23:52 عصر
ممنون از راهنماییتون اما این روش برای حالتی هست که گریدمون را باند نکرده باشیم اما من گریدم در حالتی هست که به دیتا بیس باند هست

alibilgats
جمعه 18 مهر 1393, 14:31 عصر
سلام دوست عزیز
میتونی سورس رو بذاری تا بررسیش کنم؟
من خیلی با گرید جانوس کار کردم. خود گرید وقتی بایند میشه داده ها رو خودش میفرسته و فقط کافیه save بشه. کار دیگه ای لازم نیست!

fatemesoleimani
جمعه 18 مهر 1393, 15:21 عصر
سلام

دیتابیس شامل یه جدول هست که فقط 3 ستون داره که در بالا توضیح دادم و دیگه اینجا نگذاشتم .

من برای بایند کردن بعد از اینکه دیتاسورس را تعیین کردم createroottable و بعد reterivestructure را زدم یا اینکه می تونیم createtable را ایجاد کرده و بعد ستون به ستون بایند کنیم نمیدونم دیگه

چطوری باید باند کنیم .

می خوام وقتی روی new کلیک کنم می خوام یه رکورد ایجاد بشه که تو اینجا تو اجرا ستون اخر گرید انتخاب نمیشه و باید خودمون انتخابش کنیم که این مشکل هست و بعد وقتی save را زدم

که تو بالا روش های مختلف را در کد نویسی تست کردم اما جواب نمیده .
اطلاعات ذخیره بشه .

alibilgats
جمعه 18 مهر 1393, 18:26 عصر
دوست عزیز شما از جانوس چه نسخه ای استفاده میکنید؟
بانک اطلاعاتی و فایل های dll جانوس رو توی فایل zip پیدا نکردم!

alibilgats
جمعه 18 مهر 1393, 19:27 عصر
دوست عزیز من کدهای شما رو بررسی کردم
مشکل اینه که شما میخواید از دو ترکیب کدنویسی و بایندینگ به دیتاسورس استفاده کنید. وقتی به این ترکیب گرید قدرتمند جانوس هم اضافه بشه یکم پیچیده میشه قضیه!
وقتی شما با گرید جانوس بخوایید کارکنید به نظر من نباید از ابزار bindingNavigator استفاده کنید! فقط کافیه تنظیمات لازم رو روی گرید جانوس اعمال کنید. خود گرید جانوس امکانات ایجاد و ذخیره و حذف و جستجو و ... رو با شرایط بهتری در اختیار قرار میده!
درضمن وقتی شما تو حالت بایندینگ یه رکوردی رو اضافه میکنید تا وقتی عمل ذخیره رو انجام ندید اون رکوردها توی حافظه یا همون رم میمونه و وقتی شما رکورد جدیدی رو اضافه کنید تابع codemax دوباره عدد قبلی رو برمیگردونه! چون تابع codemax مستقیم عدد بعدی رو از بانک میگیره نه حافظه!

حالا من نمیدونم شما دقیقا میخواید چیکار کنید!
میخواید یه سری رکورد رو وارد کنید و بعد همزمان همه اونها رو بفرستید به بانک یا اینکه هر رکورد وقتی فیلدهاش تکمیل شد مستقیم توی بانک ذخیره بشه!؟

fatemesoleimani
شنبه 19 مهر 1393, 15:17 عصر
ممنون از راهنماییتون من می خوام هر رکورد وقتی فیلدهاش تکمیل شد مستقیم تو بانک ذخیره شه . که اینجا نمیدونم چرا درست بایند نمیشه و وقتی هم که تو اجرا فیلدهای یه رکورد را وارد می کنم

اخرین فیلد رکورد دیگه انتخاب نمیشه یعنی برای هر فیلد وقتی روی فیلد بعدی می رم فیلدهای قبلی در حالت انتخاب قرار می گیره ولی خود اون فیلد انتخاب نمیشه که اینطوری اخرین فیلد یه رکورد

انتخاب نمیشه مشکل دوم هم اینه که با بایند تنها مقادیر خالی ذخیره میشه باید کد بنویسم که کار درستی نیست .

alibilgats
یک شنبه 20 مهر 1393, 00:48 صبح
سلام
برنامه رو تا حدودی براتون اصلاح کردم.
ولی به نظر من اگه شما واسه درج و ویرایش رکورد از textbox استفاده کنید بهتره.

http://s5.picofile.com/file/8145419150/WindowsFormsApplication18.rar.html

fatemesoleimani
یک شنبه 20 مهر 1393, 15:32 عصر
سلام

بسیار ممنونم از راهنماییتون بله درج انجام میشه اما می خواستم وقتی مثلا ذخیره را زدم بیاد درج را انجام بده اما باز هم راهنماییتون خیلی کمکم کرد مشکل اینجااست که الان

وقتی اطلاعات یه رکورد را وارد می کنیم اخرین ستون اطلاعاتش وقتی خونده میشه که روی یه ستون از گرید کلیک بشه یعنی اخرین ستون اگر روی ستون دیگه از گرید کلیک نشه

خونده نمیشه .در هر صورت بسیار متشکرم از راهنماییتون . موفق و سربلند باشید