our notes for our youngers

September 15, 2009

ADO.NET in C# (part 2)

Filed under: ADO in Window Application — Tags: , , , , — sevenlamp @ 9:42 AM

ကဲ မေန႔က ကြၽန္ေတာ္တို႔ categoryDataSet ေဆာက္ခဲ႔ျပီးျပီဆိုေတာ့ အခုကြၽန္ေတာ္တို႔ datagrid မွာ ျပဖို႔ လုပ္ရေအာင္။ အရင္ဆံုး window form တစ္ခုယူလိုက္ပါ၊ နာမည္ကိုေတာ့ CategoryList လို႔ ေပးလိုက္ပါ။ အဲ့ဒီ form ထဲကို ပံုမွာ ျပထားတဲ႔ အတိုင္း label တစ္ခု၊ button တစ္ခုနဲ႔ datagrid တစ္ခုထည့္လိုက္ပါဦး။ control ေတြမွာ ျပင္ရမယ့္ property setting ကိုလည္း ျပထားပါတယ္။
1ပံု (၁)

Datagrid ကို click ႏွိပ္လိုက္ရင္ ညာဖက္အေပၚေဒါင့္မွာ arrow icon ေလးတစ္ခုေတြ႔ရပါလိမ့္မယ္။ အဲ့ဒါေလးကို ႏွိပ္လိုက္ရင္ datasource ေရြးဖို႔ combobox ေလးကိုေတြ႔မွာပါ။ အဲ့ဒီ combobox ေလးကို ႏွိပ္ျပီး ဒီ form ေလးမွာ ရွိေနတဲ႔ datasource ေတြကိုေရြးလို႔ရပါတယ္။ အခုကြၽန္ေတာ္တို႔က datasource မထည့္ရေသးလို႔ ဘာမွ ေတြ႔ရမွာမဟုတ္ပါဘူး။ datasource တစ္ခု create လုပ္ဖို႔နည္းလမ္း ၂ခုရွိပါတယ္။ နည္းလမ္း (၁) က ေအာက္က ပံု (၂) မွာ ျပထားသလို combobox ထဲမွာ အဆင့္ဆင့္သြားျပီး ကြၽန္ေတာ္တို႔ ေဆာက္ထားတဲ႔ CategoryDataSet ထဲက category table ေလးကို ေရြးေပးလိုက္ပါ။ ဒါဆိုရင္ ပံု (၃) မွာ ျပထားသလို categoryBindingSource object, categoryDataSet object နဲ႔ categoryTableAdapter တို႔ကို ေဆာက္ေပးသြားပါလိမ့္မယ္။ datagrid မွာလည္း category table ထဲက column ေတြ ေပၚလာတာ ေတြ႔ရမွာပါ။ ဒါဆိုရင္ datagrid နဲ႔ dataset ခ်ိတ္တဲ႔ အပိုင္းျပီးသြားပါျပီ။ အခု ဒီ program ေလးကို run လိုက္ရင္ data ေတြေပၚလာျပီလား။ မေပၚဘူးေနာ္… ဘယ္ေပၚမလဲ category table ထဲမွာ data မွ မရွိတာကိုး😀
2

ပံု (၂)

3ပံု (၃)

ကဲ အခု ကြၽန္ေတာ္တို႔ dataset နဲ႔ ခ်ိတ္ဆက္မႈ ျပီးသြားျပီ ဆိုေတာ့။ data အသြင္းအထုတ္လုပ္လို႔ ရပါျပီ။ ဒီလိုလုပ္လို႔ ရဖို႔အတြက္ အရင္ဆံုး ပံု (၃)မွာ ျပထားသလို datagrid မွာ Enable Adding, Enable Editing နဲ႔ Enable Deleting တို႔ကို check လုပ္ေပးခဲ႔ရပါမယ္။ အခု ကြၽန္ေတာ္တို႔ လုပ္ရမွာက program ကို run လိုက္ျပီး category ေတြထည့္ရပါမယ္။ ဒီလိုထည့္တဲ႔ အခါမွာ categoryID ကို ထည့္ေပးစရာ မလိုပါဘူး။ primary key ျဖစ္တဲ႔ categoryID ကို autoincrement လုပ္ထားတဲ႔ အတြက္ ကြၽန္ေတာ္တို႔ data ျဖည့္ေပးစရာ မလိုပါဘူး။ save လုပ္ရင္ အလိုလိုထည့္ေပးသြားပါလိမ့္မယ္။ အခုကြၽန္ေတာ္တို႔ data ျဖည့္ျပီးလို႔ database ထဲကို သိမ္းေတာ့မယ္ဆိုရင္ update button ကိုႏွိပ္ပါ့မယ္။ ဒါဆို update button ရဲ႕ click event မွာ dataset ထဲက data ေတြကို database ထဲသြားသိမ္းဖို႔ အတြက္ code ေရးေပးရပါမယ္။ ကြၽန္ေတာ္တို႔ အခု datagrid ထဲမွာ ထည့္ေနတဲ႔ data ေတြက memory ေပၚက categoryDataSet ထဲမွာ ရွိေနပါတယ္။ အဲ့ဒီ data ေတြကို database ထဲေရာက္ဖို႔အတြက္ Adapter ကေနတဆင့္ Update function ကိုေခၚရမွာပါ။ မေခၚခင္အရင္ဆံုး datagrid နဲ႔ ခ်ိတ္ထားတဲ႔ datasource ကို ျပင္ေနတာ ျပီးပါျပီလို႔ ေျပာေပးရပါမယ္။ ဒီလိုမ်ိဳးပါ…

private void button1_Click(object sender, EventArgs e)
{
        this.categoryBindingSource.EndEdit();
      	this.categoryTableAdapter.Update(this.categoryDataSet.Category);
}

အခု ကြၽန္ေတာ္ေခၚလိုက္တဲ႔ update function က dataset ေဆာက္တုန္းက compiler က auto ေဆာက္ေပးသြားတဲ႔ function ျဖစ္ပါတယ္။
4ပံု (၄)
5ပံု (၅)

ပံု (၄) မွာ ျပထားတဲ႔ အတိုင္း ကြၽန္ေတာ္ category ၂ေၾကာင္းျဖည့္လိုက္ပါတယ္။ categoryID က -1 နဲ႔ -2 ဆိုျပီး temporary assign လုပ္ေပးသြားပါတယ္။ update button ကို ႏွိပ္ျပီး update လုပ္လိုက္ျပီးတဲ႔ အခ်ိန္မွာေတာ့ ပံု(၅) အတိုင္း ျဖစ္သြားမွာပါ။ categoryID က database ထဲကအတိုင္း refresh ျဖစ္သြားပါတယ္။ program ကို ပိတ္ျပီး ျပန္ဖြင့္တဲ႔ အခါမွာလည္း ဒီအတိုင္းပဲ ေပၚေနပါလိမ့္မယ္။ ဘာလို႔လဲဆိုေတာ့ form_load event မွာ ေရးထားတဲ႔ ဒီ code ေၾကာင့္ပါ။

private void CategoryList_Load(object sender, EventArgs e)
{
      this.categoryTableAdapter.Fill(this.categoryDataSet.Category);
}

ဒီ code ကို ကြၽန္ေတာ္တို႔ datagrid နဲ႔ dataset ထဲက table နဲ႔ ခ်ိတ္လိုက္တဲ႔ အခ်ိန္မွာ auto ေရးေပးသြားတာပါ။ dataset ထဲမွာ ရွိတဲ႔ categoryTableAdapter ထဲမွာ ကြၽန္ေတာ္တို႔ေရးခဲ႔တဲ႔ Fill function ကိုသံုးျပီး dataset ထဲက category table ထဲကို data ျဖည့္ေပးပါတယ္။ table ထဲမွာ dataရွိသြားတဲ႔ အတြက္ table နဲ႔ ခ်ိတ္ထားတဲ႔ datagridview မွာပါ data ေတြ ေပၚလာတာပါ။ အဲ့ဒီ formload event ထဲက data fill လုပ္တဲ႔ code ကို comment ပိတ္ျပီး ျပန္ run ရင္ data ေပၚမွာ မဟုတ္ေတာ့ပါဘူး။ အိုေက ဒီေလာက္ဆိုရင္ object datasource သံုးျပီး datagridview နဲ႔ data အသြင္းအထုတ္လုပ္တာ နားလည္ျပီထင္ပါတယ္။

1 Comment »

  1. How to populate data in text box by using combo box.Says, Chose ID in Combo Box, then Name, Add, City, Contact no and etc will be shown in respective text box control. If you have time, please show me.

    Comment by Ko Thet — October 22, 2009 @ 8:21 PM


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: