our notes for our youngers

March 18, 2010

Formatted TextBox

Filed under: ASP.NET, Javascript — sevenlamp @ 4:52 PM

Formatted TextBox

ဒီေန႔ ရံုးမွာ program ေရးေနရင္းနဲ႔ entry form မွာ သံုးမယ့္ textbox တခ်ိဳဳ႕မွာ ကိုယ္လိုခ်င္တဲ႔ charactor ကိုပဲ ေရြးၿပီး ရိုက္ခြင့္ျပဳခ်င္တယ္။ ခြင့္မျပဳတဲ႔ charactor ေတြကို ရိုက္ရင္ ဘာမွ မေပၚေစခ်င္ဘူး။ အဲ့ဒီလို လုပ္ဖို႔ လိုလာတယ္။ ဥပမာဗ်ာ…. textbox ထဲမွာ ‘#’, ‘?’, ‘*’ only ပဲ ရိုက္ခြင့္ျပဳခ်င္တယ္ေပါ့။ အရင္တုန္းက project အေဟာင္းမွာေတာ့ numeric only ပဲရိုက္လို႔ရတဲ႔ textbox မ်ိဳးလုပ္ထားတာ ရွိတယ္။ အဲ့ဒီမွာ လုပ္တုန္းက htc file ကို သံုးၿပီးလုပ္ထားတာ။ htc က Firefox မွာ support မလုပ္ဘူး။ ဒါေၾကာင့္ အခုတစ္ေခါက္ေတာ့ ရို္းရိုး javascript နဲ႔ပဲ ထိန္းဖို႔ လုပ္လိုက္တယ္။ ဒါနဲ႔ Google အားကိုးလို႔ Internet ထဲမွာ ရွာေဖြဖတ္ရႈၿပီး ေရးလုိက္ပါတယ္။ browser အားလံုး support လုပ္ေအာင္ ေရးရတာလည္း နည္းနည္းေတာ့ လုပ္ေပါက္ကပ္သား။

function numericTextBox(e) {

e = e || window.event;

var key = e.which || e.keyCode;

if ((!e.shiftKey && (key > 47 && key < 58)) || key == 8 || key == 46 || key == 35 || key == 36 || key == 37 || key == 39) {

return true;

} else {

if (e.preventDefault) e.preventDefault();

e.returnValue = false;

return false;

}

}

function FormatedTextBox(e) {

e = e || window.event;

var key = e.which || e.keyCode;

if ((e.shiftKey && (key == 56 || key == 51 || key == 52)) || key == 8 || key == 46 || key == 35 || key == 36 || key == 37 || key == 39) {

return true;

} else {

if (e.preventDefault) e.preventDefault();

e.returnValue = false;

return false;

}

}

aspx code

<asp:TextBox runat=”server” Width=”200px” onkeydown=”return FormatedTextBox(event)“></asp:TextBox>

<asp:TextBox runat=”server” Width=”200px” onkeydown=”return numericTextBox(event)></asp:TextBox>

Javascript မွာ key code number ေတြကို အေသးစိတ္သိခ်င္ရင္ ဒီ(http://unixpapa.com/js/key.html) မွာ ၾကည့္လို႔ရပါတယ္။

Javascript event object အေၾကာင္းကိုေတာ့ ဒီ(http://www.exforsys.com/tutorials/javascript/javascript-event-object.html) ကေနၾကည့္လို႔ ရပါတယ္။

March 12, 2010

Simple Book Store (Part 2)

Filed under: ASP.NET — Tags: , — sevenlamp @ 10:22 AM

ကြၽန္ေတာ္တို႔ DataBase ေဆာက္လို႔ ၿပီးၿပီဆိုေတာ့ အခု program နဲ႔ ခ်ိတ္ပါ့မယ္။ web application နဲ႔ database ခ်ိတ္ၿပီး data input/output လုပ္ဖို႔အတြက္ နည္းလမ္းေတြ အမ်ားႀကီးရွိပါတယ္။ အဲ့ဒီထဲကမွ ကြၽန္ေတာ္အခု ObjectDataSource သံုးၿပီး ခ်ိတ္ဆက္ျပပါမယ္။ ObjectDataSource သံုးမယ္ဆိုရင္ အလြယ္ဆံုးနည္းကေတာ့ DataSet နဲ႔ တြဲၿပီးသံုးတဲ႔ နည္းပဲ ျဖစ္ပါတယ္။ DataSet ေဆာက္တာကို အရင္ပိုဒ့္ေတြမွာ ကြၽန္ေတာ္ရွင္းျပၿပီးသားျဖစ္တဲ႔အတြက္ အခုကြၽန္ေတာ္ အၾကမ္းပဲ ေျပာသြားပါ့မယ္။

Dataset Creation Process

၁ – solution explorer ထဲက project name ကို right click လုပ္ၿပီး ‘Add new items’ ကိုႏွိပ္လိုက္ပါ။  ေပၚလာတဲ႔ window ထဲမွာ DataSet ကိုေရြးၿပီး Add လုပ္လိုက္ပါ။ ( App_Code ထဲကို ထည့္မလား ေမးရင္ ထည့္မယ္လို႔သာ ေျပာလိုက္ပါ။ )

၂ – Dataset ရၿပီးရင္ ToolBox ထဲကေန TableAdapter ေဆာက္ပါ။ TableAdapter ေဆာက္ရင္ ပထမဆံုး Database နဲ႔ connection ယူရပါတယ္။ ( ပထမဆံုး တစ္ႀကိမ္မွာ new connection ယူၿပီး save ထားလိုက္ရင္ ေနာက္အႀကိမ္ေတြမွာ new connection ယူစရာ မလိုေတာ့ပါဘူး၊ Auto ေရြးေပးပါလိမ့္မယ္။)

၃ – connection ရၿပီဆိုရင္ SQL Statement ကိုေရြးၿပီး ေနာက္တစ္ဆင့္မွာ ကြၽန္ေတာ္လိုခ်င္တဲ႔ Table ကိုေရြးၿပီး select query ေရးေပးရပါမယ္။ (ဒီေနရာမွာ တစ္ခုသတိထားဖို႔လိုတာက TableAdapter ေဆာက္တဲ႔ အခ်ိန္မွာ ေရးတဲ႔ ပထမဆံုး select query မွာ (1) All Column(*) ကိုပဲေရြးပါ။ (2) Table မ join ပါနဲ႔။) ဘာလို႔လဲ ဆိုေတာ့ Table join လုိက္ရင္ Insert, Update, Delete Query ေတြကို compiler က auto မေဆာက္ေပးေတာ့ပါဘူး။ Search Page ေတြ၊ List Page ေတြအတြက္ Table Join ဖို႔လိုအပ္ရင္ ေနာက္မွ New Query ယူၿပီး Select လုပ္ပါ။ ပထမဆံုး Query မွာေတာ့ Table မ Join ပါနဲ႔။ အေရးႀကီးတာ တစ္ခု ေျပာဖို႔ က်န္ေသးတယ္။ ကြၽန္ေတာ္တို႔ Database ထဲမွာ table ေတြ ေဆာက္တုန္းက Primary Key ေပးဖို႔လည္း မေမ႔ခဲ႔ပါနဲ႔ဦး။ အကယ္လို႔ primary key မေပးထားခဲ႔ဘူးဆိုရင္ TableAdapter ေဆာက္တဲ႔ အခ်ိန္မွာ Insert Query ပဲ ေရးေပးသြားပါလိမ့္မယ္။ Update နဲ႔ Delete ေတာ့ ေဆာက္ေပးမွာ မဟုတ္ပါဘူး။

၄ – ကြၽန္ေတာ္တို႔ေရးလိုက္တဲ႔ select query အတြက္ function name ေပးရတဲ႔ ေနရာမွာ ကိုယ္ႀကိဳက္တဲ႔ name ေပးလိုက္လို႔ ရပါတယ္။ default အေနနဲ႔ Fill နဲ႔ GetData ဆိုၿပီး function ၂ ခု ေဆာက္ေပးပါလိမ့္မယ္။ ကြၽန္ေတာ္တို႔ မသံုးခ်င္တဲ႔ function ကို ျဖဳတ္ထားလို႔လဲ ရပါတယ္။ Fill function နဲ႔ GetData function ဘာကြာလဲဆိုရင္ ေအာက္မွာ ျပထားတဲ႔ နမူနာ usage ေလးကို ၾကည့္လိုက္ရင္ ရွင္းသြားမွာပါ။

Fill Function Usage

DataSetName ds = new DataSetName(); // data သိမ္းမယ့္ dataset ကို object ေဆာက္ပါတယ္။

TableAdapterName adp = new TableAdapterName(); // function(query) ရွိတဲ႔ Table adapter ကို object ေဆာက္ပါတယ္။

adp.Fill (ds.DataTableName); // Fill function က data သိမ္းမယ့္ dataset ကို parameter အေနနဲ႔ ထည့္ေပးရတယ္။

GetData Function Usage

DataSetName ds = new DataSetName();

TableAdapterName adp = new TableAdapterName();

ds.DataTableName.Merge( adp.GetData() ); // GetData Function ကေတာ့ datatable return ျပန္ၿပီး အဲ့ဒါကို ကိုယ္သိမ္းမယ့္ datasetထဲက table ထဲကို ေပါင္းထည့္ေပးရပါတယ္။

မွတ္ခ်က္။ ။ Database ထဲက table ေတြအတြက္ dataset ေဆာက္တဲ႔ အခါမွာ DataSet ကို တစ္ခုထဲေဆာက္ၿပီး အဲ့ဒီထဲမွာ table တစ္ခုစီအတြက္ TableAdapter တစ္ခုႏႈန္းနဲ႔ TableAdapter ေတြ အမ်ားႀကီးေဆာက္လို႔လည္း ရပါတယ္။ (ဒါမွမဟုတ္) table တစ္ခုအတြက္ DataSet တစ္ခုႏႈန္းနဲ႔ DataSet ေတြ အမ်ားႀကီး ေဆာက္ၿပီးေတာ့ သံုးလည္းရပါတယ္။

pic1

ဒါေလးက ကြၽန္ေတာ္စက္မွာ ေဆာက္ၿပီးသြားတဲ႔ Dataset နဲ႔ TableAdapter ေတြပဲ ျဖစ္ပါတယ္။

March 9, 2010

Simple Book Store (Part 1)

Filed under: ASP.NET — sevenlamp @ 11:08 AM

Simple Book Store

ကြၽန္ေတာ့္ကို Cbox ထဲမွာ ကိုေဇာ္လင္းခိုင္က “Book Store တစ္ခုအတြက္ Database Table ေတြ ဘယ္လိုေဆာက္ရမလဲ” ဆိုျပီး ေမးထားတဲ႔ ေမးခြန္းတစ္ခု ရွိပါတယ္။ ဒီလိုပဲ ကိုနိုင္ေအာင္ ကလည္း Comment တစ္ခုမွာ “ASP.NET ကေန Database ကို ခ်ိတ္ဆတ္ပံုေလး ေျပာျပေပးပါ” လို႔ ေမးထားပါတယ္။ ဒီေမးခြန္း ၂ ခုကိုလည္း ေျဖရင္းနဲ႔ ကြၽန္ေတာ္ Simple Book Store Program ေလးတစ္ခု တည္ေဆာက္ျပခ်င္ ပါတယ္။ ဒီ Program ေလးမွာ အဓိက အပိုင္း ၂ ပိုင္း ပါ၀င္ပါတယ္။ Book List နဲ႔ Book Entry ေပါ့။

Database Normalization

Normalization လုပ္လို႔ ေကာင္းတဲ႔ အခ်က္ေတြကိုေတာ့ SQL Server Book Online ထဲမွာ ဒီလို ေျပာထားပါတယ္။

Some of the benefits of normalization include the following:

  • Faster sorting and index creation.
  • A larger number of clustered indexes.
  • Narrower and more compact indexes.
  • Fewer indexes per table. This improves the performance of the INSERT, UPDATE, and DELETE statements.
  • Fewer null values and less opportunity for inconsistency. This increases database compactness.

read more…

January 29, 2010

Create your own Calendar from C#

Filed under: Other — sevenlamp @ 4:53 PM

ကြၽန္ေတာ္တို႔ အခု C# နဲ႔ web page ေပၚမွာ calendar တစ္ခုေဆာက္ ၾကရေအာင္။ မ်ားေသာအားျဖင့္ေတာ့ web page မွာ calendar ေတြကို Javascript နဲ႔ ေဆာက္ေလ့ ရွိၾကပါတယ္။ အခုကြၽန္ေတာ္က ဒီဘေလာ့ေလးအတြက္ Post တင္တဲ႔ ေန႔ေတြကို Calendar နဲ႔ ျပခ်င္တာဆိုေတာ့ Javascript နဲ႔ အဆင္မေျပဘူး။ ဒါေၾကာင့္ C# ကေနပဲ Calendar ေဆာက္လိုက္တာပါ။ ကဲ စလိုက္ရေအာင္…read more…

Using String in C# (Part 1)

Filed under: Other — sevenlamp @ 4:48 PM

C# Programming language ထဲမွာ ကြၽန္ေတာ္တို႔ အသံုးမ်ားတဲ႔ string အေၾကာင္းကို အနည္းငယ္ ေလ့လာၾကည့္ၾကရေအာင္။ တကယ္ေတာ့ string ဆိုတာ character ေတြစုထားတဲ႔ character array ပဲ ျဖစ္ပါတယ္။ string ကို ေရးမယ္ဆိုရင္ C# မွာ double code sign ( ” ) အဖြင့္အပိတ္အတြင္းမွာ ေရးရပါတယ္။ ဒီလိုမ်ိဳးပါ….read more…

TinyMCE Text Editor

Filed under: Other — sevenlamp @ 4:39 PM

ကြၽန္ေတာ္တို႔ web application ေတြမွာ Microsoft Word လိုမ်ိဳး Text Editor ေတြ သံုးဖို႔ လိုအပ္လာၿပီဆိုရင္ ကြၽန္ေတာ္တို႔ အတြက္ ေရြးခ်ယ္စရာေတြ အမ်ားအျပား ရွိပါတယ္။ အသံုးမ်ားတဲ႔ Text Editor ေတြက FreeTextBox (http://freetextbox.com), TinyMCE (http://tinymce.moxiecode.com), FCKEditor (http://ckeditor.com) တို႔ ျဖစ္ၾကပါတယ္။ အရင္တုန္းကေတာ့ ကြၽန္ေတာ္ FreeTextBox Control ကို သံုးခဲ႔ဘူးပါတယ္။ Dot Net 1.1 မွာ သံုးခဲ႔တာပါ။ အခုကြၽန္ေတာ္လက္ရွိသံုးေနတာက TinyMCE Editor ကိုသံုးေနပါတယ္။ ပိုလြယ္တယ္ ထင္လို႔ပါ။ read more….

Silverlight Offline Installation

Filed under: Other — sevenlamp @ 4:01 PM

ကြၽန္ေတာ္တို႔ software တစ္ခုရဲ႕ exe file ကို internet ကေန download လုပ္ၿပီး ကြၽန္ေတာ္တို႔ရဲ႕ အိမ္က computer မွာ install လုပ္တဲ႔ အခါမွာ တခါတေလေတြ႔ရတ႔ဲ အခက္အခဲ တစ္ခုရွိပါတယ္။ အဲ့ဒါကေတာ့ ကြၽန္ေတာ္တို႔ install လုပ္လိုက္တဲ႔ အခါမွာ installer အတြက္ လိုအပ္တဲ႔ တခ်ိဳ႕ အပိုင္းေလးေတြကို online မွာ သြားရွာၿပီး download လုပ္ေနျခင္းပါပဲ။ အင္တာနက္ခ်ိတ္ထားတဲ႔ ကြန္ပ်ဴတာေတြအတြက္ အေရးမၾကီးေပမယ့္၊ ကြၽန္ေတာ့္ အိမ္က ကြန္ပ်ဴတာလိုမ်ိဳး internet မခ်ိတ္ထားတဲ႔ computer ေတြမွာ install လုပ္ရေတာ့မယ္ ဆိုရင္ေတာ့၊ ဒါဟာ တကယ့္ကို ဆိုးရြားတဲ႔ ျပႆနာ တခုျဖစ္လာပါေတာ့တယ္။ ဒီအခါမွာ internet မခ်ိတ္ထားတဲ႔ offline အေျခအေနမွာပါ install လုပ္လို႔ ရမယ့္ offline installer ဆိုတာေတြကို ဒုကၡခံၿပီး ရွာၾကရပါတယ္။ read more…

January 21, 2010

ေနရာ ေျပာင္းပါေတာ့မယ္

Filed under: Other — sevenlamp @ 12:15 PM

ကြၽန္ေတာ့္ ဘေလာ့ေလးကို အခုသံုးေနတဲ႔ wordpress ကေန ကိုယ္ပိုင္ site ေလးကို ေျပာင္းေတာ့မလို႔ပါ။ http://www.sevenlamp.co.cc ပါ။ အခုလက္ရွိ develop လုပ္ေနတုန္းပါပဲ။ ဒါေၾကာင့္ ပိုဒ့္ေတြ ေလာေလာဆယ္ မတင္ျဖစ္ေသးပါဘူး။ ဘေလာ့ အသစ္မွာ ေနာက္အက်ဆံုး 1 Feb 2010 ထားျပီး ပိုဒ့္ေတြ စျပီး တင္ပါ့မယ္။ အခု ဒီဘေလာ့ အေဟာင္းေလးက ပိုဒ့္ေတြကိုလည္း ျပန္ျပီး ေရႊ႕ထားပါ့မယ္။ ဘေလာ့ အသစ္ေလးကို လာေရာက္ ၾကဖို႔ ဖိတ္ေခၚပါတယ္။ အခုမွ developing လုပ္တုန္း ျဖစ္တဲ႔ အတြက္ အဆင္မေျပတာေလးေတြရွိရင္ သည္းခံျပီး ေထာက္ျပေပးၾကပါခင္ဗ်ာ။ အၾကံဥာဏ္ေလးမ်ားလည္း ေတာင္းဆိုခ်င္ပါတယ္။

ေက်းဇူးတင္ပါတယ္ ခင္ဗ်ာ။

sevenlamp

January 1, 2010

developing a site ( part 4 )

Filed under: ASP.NET, developing website — Tags: , , , — sevenlamp @ 2:45 PM

Latest Source Code (1/1/2010 အထိ) http://www.sendspace.com/file/uxkj6h

ကြၽန္ေတာ္ အလြယ္ဆံုးလို႔ ထင္တဲ႔ project ထဲကို About Page ထည့္တဲ႔ အပိုင္းေလးကို အရင္ဆံုး စလုပ္လိုက္ပါတယ္။ project ထဲကို AboutMe.aspx page ေလး ထည့္လိုက္ျပီး။ About မွာ ျပမယ့္ message ေတြအတြက္ entry အပိုင္း က မလုပ္ရေသးေတာ့။ စာသားေတြကို ဒီတိုင္းပဲ Page ထဲကို ထည့္ျပလိုက္ပါတယ္။ comment ေပးတဲ႔ အပိုင္းေလးေရးဖို႔အတြက္၊ Database ထဲမွာ Comments Table သြားေဆာက္လုိက္ပါတယ္။

Column Name Data Type Allow Nulls
CommentID int Unchecked
PostID int Checked
MemberID int Checked
CommentTitle nvarchar(500) Checked
CommentText nvarchar(MAX) Checked
CommentTime datetime Checked
CommentAuthorName nvarchar(50) Checked
CommentAuthorLocation nvarchar(50) Checked

ကြၽန္ေတာ္က DataBase နဲ႔ ခ်ိတ္တဲ႔ ေနရာမွာ objectdatasource ကိုပဲ သံုးမွာ မို႔လို႔ DataSet လည္းေဆာက္ေပးဖို႔လိုပါေသးတယ္။ ျပီးရင္ comment entry အတြက္ textbox ေလးေတြထည့္တယ္။ Validation အတြက္ requirefield validator နဲ႔ email format အတြက္ Regularexpression validator controls ေတြကို ထည့္ထားပါတယ္။ send button ႏွိပ္ရင္ server သြားတဲ႔ အလုပ္ကို updatepanel ထဲမွာ ပဲ ထည့္ေပးလိုက္ပါတယ္။
Comment list ျပန္ျပဖို႔အတြက္ေတာ့ gridview control ကိုပဲ သံုးျပီး object datasource နဲ႔ ခ်ိတ္ျပလိုက္ပါတယ္။ ဒီ page ေလးက ရွင္းပါတယ္။ ကုဒ္လည္း သိပ္မရႈပ္ဘူး။

public partial class AboutMe : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Title = "About Page : sevenlamp.co.cc";
        ShowCommentCount();
    }

    private void ShowCommentCount()
    {
        DataSet_CommentTableAdapters.CommentsTableAdapter adp = new DataSet_CommentTableAdapters.CommentsTableAdapter();
        int commentCount = (int)adp.GetCommentCountByPostID(0);
        if (commentCount == 0)
            lblTotalComment.Text = "No Comment";
        else if (commentCount == 1)
            lblTotalComment.Text = commentCount.ToString() + " Comment";
        else
            lblTotalComment.Text = commentCount.ToString() + " Comments";
    }
    protected void SendButton_Click(object sender, EventArgs e)
    {
        ObjectDataSource2.Insert();
    }
    protected void ObjectDataSource1_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
    {
        e.InputParameters["CommentTime"] = DateTime.Now;
    }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            ((Label)e.Row.FindControl("lblCommentNo")).Text = "#" + (e.Row.RowIndex+1).ToString();
        }
    }
    protected void ObjectDataSource2_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
    {
        ShowCommentCount();
        GridView1.DataBind();
    }
}

December 30, 2009

developing a site ( part 3 )

Filed under: developing website — Tags: , , — sevenlamp @ 11:59 AM

HISTORY

Dec 30, 2009
– chatbox မွာ validation အပိုင္းထည့္တယ္
– postback ျပန္ေနတာကို ျပင္တယ္။
Dec 28, 2009
– project ျပီးသေလာက္ကို publish လုပ္တယ္။
Dec 27, 2009
– chatbox အပိုင္းေရးတယ္။
Dec 26, 2009
– template လက္စသတ္တယ္။
– database ေဆာက္တယ္။
Dec 23, 2009
– template ျပင္ျပီးသေလာက္ကို publish လုပ္တယ္။
Dec 14, 2009
– template sample ရွာျပီး ေဒါင္းတယ္။
– ပံုေတြျဖတ္တယ္။ templateျပင္တယ္။

****************************************

ကြၽန္ေတာ္ မေန႔ညတုန္းက ChatBox ေလးမွာ က်န္ေနတဲ႔ အပိုင္းေလးေတြ ဆက္ျပင္ပါတယ္။ Send button ေလး click ရင္ server side ကို postback ျပန္ေနေတာ့ နည္းနည္းၾကာေနတယ္။ အဲ့ဒါေၾကာင့္ button ေလးကို update panel ထဲကို ထည့္ေပးလိုက္ပါတယ္။ ေနာက္ျပီး textbox ေတြထဲမွာ data မထည့္ပဲ send ႏွိပ္ရင္ alert ျပဖို႔အတြက္လည္း CustomValidator Control ေလးထည္ျပီးစစ္လိုက္ပါတယ္။ CustomValidator အတြက္ client script ေလးက ဒီလိုပါ။

function CheckMessage(source, arguments)
{
      if(document.getElementById("ctl00_ContentPlaceHolder1_SenderNameTextBox").value=="")
      {
           alert("Enter Your Name First!");
           document.getElementById("ctl00_ContentPlaceHolder1_SenderNameTextBox").focus();
           arguments.IsValid = false;
      }
      else if(document.getElementById("ctl00_ContentPlaceHolder1_SenderLocationTextBox").value=="")
      {
           alert("Enter Your Location First!");
           document.getElementById("ctl00_ContentPlaceHolder1_SenderLocationTextBox").focus();
           arguments.IsValid = false;
      }
      else if(document.getElementById("ctl00_ContentPlaceHolder1_ChatLogTextBox").value=="")
      {
           alert("Enter Message First!");
           document.getElementById("ctl00_ContentPlaceHolder1_ChatLogTextBox").focus();
           arguments.IsValid = false;
      }
      else
      {
           arguments.IsValid = true;
      }
}

ဒီေန႔ ၃၀ ဒီဇင္ဘာ အထိ Latest program ကို ဒီကေန ေဒါင္းလို႔ ရပါျပီ။ http://www.sendspace.com/file/kpywr0

Older Posts »

Blog at WordPress.com.