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) ကေနၾကည့္လို႔ ရပါတယ္။

1 Comment »

  1. စာေမးခ်င္လို႔ပါခင္ဗ်ာ။
    ကၽြန္ေတာ္က MSchart ကို သံုးထားပါတယ္။ DataVisualization.Charting ေပါ့ခင္ဗ်ာ။ C# windowform application ပါခင္ဗ်။
    အၾကမ္းဖ်ဥ္းသံုးတာကေတာ့ timer တစ္ခုနဲ႔ MSChart ကို dynamic ေဆာက္တာပဲခင္ဗ်ဲ။
    private void xxx(double[] tran)
    {
    this.Controls.Remove(this.chart1);
    System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
    System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
    System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();

    this.chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart();
    ((System.ComponentModel.ISupportInitialize)(this.chart1)).BeginInit();
    this.SuspendLayout();
    …..
    this.chart1.Size = new System.Drawing.Size(800, 275);
    this.chart1.TabIndex = 2;
    this.chart1.Text = “chart3”;

    this.ClientSize = new System.Drawing.Size(1000, 700);
    this.Controls.Add(this.chart1);

    }

    ဆိုၿပီးေဆာက္တာခင္ဗ်။ DataPoint ေတြက [400] ေလာက္ရွိတဲ့ Double[] ကေန ဆြဲထုတ္ယူထားေတာ့ဗ်ာ ကၽြန္ေတာ့္ timer က 1ms ေလာက္ႏႈန္းနဲ႔သြားတဲ့အခါ ပံုကအရမ္းခါေနတယ္ခင္ဗ်။ MsChart ကို ေနာက္ခံ gradient ေတြဘာေတြထည့္တဲ့အခါ အရမ္းကိုေလးသြားတယ္ခင္ဗ်။
    ဒါနဲ႔ ကၽြန္ေတာ္ panel တစ္ခုထဲကို ထည့္ေဆာက္ၿပီး myform.Designer.cs side မွာ စမွတ္ေန ဆိုဒ္ေတြေၾကညာၿပီး ေအာက္ ပံုစံနဲ႔ series ေတြကို ေပါင္းထည့္ပါတယ္ခင္ဗ်။ panel တစ္ခုမွာပဲ ဆြဲထည့္လိုက္တာေပါ့ခင္ဗ်ာ။

    private void drawchartx(double[] tran)
    {

    System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();

    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint1 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0, tran[1]);
    System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint2 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1, tran[2]);

    series1.Points.Add(dataPoint1);
    series1.Points.Add(dataPoint2);

    this.chart2.Series.Add(series1);

    this.chart2.Location = new System.Drawing.Point(0,0);
    this.chart2.Size = new System.Drawing.Size(450, 255);

    this.panel4.Controls.Add(chart2);

    }

    ျပႆနာကေတာ့ ထည့္လိုက္တဲ့ အေခါက္တိုင္းအတြက္ clear မေပးတတ္တာခင္ဗ်။ ကၽြန္ေတာ္က Datapoint 9 ခုမွာ series 5 ခုေတာင္ျဖည့္ထားေတာ့ မၾကာခင္မွာပဲ ၁၀၀ ၀န္းက်င္ Y scale ဟာ ေထာင္ေသာင္းခ်ီၿပီး ေလးက်လာေတာ့တာပါပဲ။ this.Controls.Remove(this.chart1); မ်ိဳနဲ႔လည္း ရွင္းမရဘူးခင္ဗ်ာ။ ကၽြန္ေတာ့္အေနနဲ႔လိုေနတာက Datapoint ေတြကို သုညအျဖစ္ ခ်ျပစ္လိုက္ခ်င္တာပဲခင္ဗ်။ double[] tran အေနနဲ႔ကေတာ့ ျပႆမရွိဘူးထင္တယ္ခင္ဗ်။ သူ႔ကို DataGridview မွာ ေကာင္းေကာင္းသံုးလို႔ရတယ္ခင္ဗ်။ Public နဲ႔သံုးထားတယ္ခင္ဗ်။ အဓိကက this.SuspendLayout(); မသံုးဘဲ MSchart ကို reset ဘယ္လိုခ်မလဲဆိုတာ ကူညီ အေျဖရွာေပးေစခ်င္ပါတယ္ခင္ဗ်ာ။
    ေပ်ာ္ရႊင္ဖြယ္ႏွစ္သစ္ျဖစ္ပါေစခင္ဗ်ာ။ စာေတြလည္း လာဖတ္ေနပါတယ္ခင္ဗ်။ ေက်းဇူးလည္းတင္ပါတယ္ခင္ဗ်ာ။

    Comment by KoPaKhan — January 4, 2012 @ 8:24 AM


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: