Private: MY Note


แบ่งปันครับ ASP.NET : function ป้องกัน user กดคลิ๊ก ปุ่ม หลายๆครั้ง

Posted in ASP.NET by dev1 on the May 30, 2007

เชื่อว่าหลายคนคงเจอปัญหานะครับ กับ การที่ user คลิ๊กปุ่มเดิมซ้ำๆ ในกรณี ที่คลิ๊กแล้ว page ไม่โหลดซะที

พอโหลดแล้วปรากฏว่า ข้อมูลขึ้นมาเต็มไปหมด (ในกรณีที่ เป็นการ save ข้อมูลใหม่นะครับ)

สำหรับ .NET 2.0 นะครับ ถ้า 1.1 ให้ ตัด “ClientScript” ออกครับ

Public Sub ClickOnceButton(ByRef page As Page, ByRef b As Button)Dim oneClickScript As System.Text.StringBuilder = New System.Text.StringBuilder()oneClickScript.Append(

“if (typeof(Page_ClientValidate) == ‘function’) { “)oneClickScript.Append(“if (Page_ClientValidate() == false) { return false; }} “)oneClickScript.Append(

“this.value = ‘Please wait…’;”)oneClickScript.Append(“this.disabled = true;”)oneClickScript.Append(page.ClientScript.GetPostBackEventReference(b,

“”))oneClickScript.Append(“;”)b.Attributes.Add(

“onclick”, oneClickScript.ToString())End Sub

ถามว่าใช้ .net 2.0 มี onClientClick ไม่ใช่เหรอ ทำไมไม่ใช้  ก็ใช้ได้ครับ ในกรณีที่ คุณไม่ได้ assign property onClientClick ไว้ที่ ปุ่ม

แต่ถ้าหา assign ค่าไว้ ค่าที่ assign ไว้จะถูกเขียนทับครับ

วิธีการใช้นะครับ

 ClickOnceButton(Me.Page, Me.btnSave)

เท่านี้ เวลา ที่ use click ปุ่ม จะสามารถกดได้ครั้งเดียว เมื่อกดไปแล้วปุ่มจะถูก disable ไว้เหมือน ปุ่ม “ส่งข้อความใหม่” ของเวปบอร์ดแห่งนี้หล่ะครับ

 ขอบคุณครับ

ที่มา: http://www.greatfriends.biz/webboards/msg.asp?id=41339

XHTML tutor

Posted in xHTML by dev1 on the May 27, 2007

Attribute Names Must Be In Lower Case
Wrong
<table WIDTH=”100%”>
Correct
<table width=”100%”>

Attribute Values Must Be Quoted
Wrong:
 <table width=100%>
 Correct:
 <table width=”100%”>

Attribute Minimization Is Forbidden
Wrong:
<input checked>
<option selected>
<frame noresize>
 
Correct:
<input checked=”checked” />
<option selected=”selected” />
<frame noresize=”noresize” />

The id Attribute Replaces The name Attribute
Wrong: 
<img src=”picture.gif” name=”picture1″ /> 
Correct: 
<img src=”picture.gif” id=”picture1″ />

XHTML Structure
<!DOCTYPE …>
<html ….>
<head> –<title>……</title>
</head>
<body> –…..
</body>
</html>

DOCTYPE
แท็กที่มีลักษณะพิเศษ
ต้องประกาศไว้ตอนต้นของเอกสาร
ไม่้ต้องมีแท็กปิด (closing tag)
มีรูปแบบการใช้ 3 รูปแบบ คือ –STRICT –TRANSITIONAL –FRAMESET
จำเป็นต้องประกาศ DOCTYPE ถ้าต้องการให้ผ่าน Validator

XHTML 1.0 Strict
Use this when you want really clean markup, free of presentational clutter.
Use this together with Cascading Style Sheets.
   <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>

XHTML 1.0 Transitional
Use this when you need to take advantage of HTML’s presentational features and when you want to support browsers that don’t understand Cascading Style Sheets.
   <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
 

คำถามเกี่ยวกับการ generate html code จาก DataGrid(asp.net 1.1) กับ GridView(asp.net 2.0)

Posted in xHTML by dev1 on the May 27, 2007

คำถามเกี่ยวกับการ generate html code จาก DataGrid(asp.net 1.1) กับ GridView(asp.net 2.0)

  • อยากรู้ว่า generate เป็น table หรือเปล่า???

XHTML Syntax Rules

Posted in xHTML by dev1 on the May 27, 2007

●Attribute names must be in lower case
●Attribute values must be quoted
●Attribute minimization is forbidden
●The id attribute replaces the name attribute
●The XHTML DTD defines mandatory elements

จุดสำคัญของ xhtml

Posted in xHTML by dev1 on the May 26, 2007

จุดสำคัญของ xhtml

  • ต้องมีลักษณะเป็น Well formed รูปแบบถูกต้อง ไม่พิมพ์ตกหล่น
  • ทุก tag ต้องมี tag ปิด ด้วยเสมอ

    เช่น <p> ปิดด้วย </p>
    ถ้าเป็น tag ที่แต่เดิมไม่มีตัวปิดให้เขียนในลักษณะนี้
    <img src=”………” mce_src=”………”  /> ,
    <input type=”checkbox” checked=”checked” />

  • ชื่อ tag และ attribute ต้องเป็นตัวพิมพ์เล็ก ทั้งหมด

    ไม่ควรเขียน <BODY><P></P></BODY>
    แต่จะต้องเป็น <body><p></p></body>

  • attribute values ต้องคลุมด้วย quoted

    เช่น <div class=red> ต้องเขียนเป็น <div class=”red”>

สำหรับผมใช้ Dreamweaver8 เราก็กำหนดให้เป็นเอกสาร xhtml ตั้งแต่ต้นได้เลย กด File / New จะมีกล่องด้านล่างขวา ให้เลือก Doctype

Misusing and overdoing CSS

Posted in css by dev1 on the May 26, 2007

มันเกิดขึ้นได้ง่ายมากที่เราจะใช้ css ผิด หรือ มากเกินไป เรามาดูตัวอย่างที่ไม่ดีกัน

a.navLink { font-weight : bold; }

<a href=/link1class=navLink>Link 1</a>     <a href=/link2class=navLink>Link 2</a>     <a href=/link3class=navLink>Link 3</a>     <a href=/link4class=navLink>Link 4</a>

ควรเขียนแบบนี้จะดีกว่าครับ

#navigation a { font-weight : bold; }

<div id=navigation>     <a href=/link1>Link 1</a>     <a href=/link2>Link 2</a>     <a href=/link3>Link 3</a>     <a href=/link4>Link 4</a> </div>

ตัวอย่างการใช้ div กับ table

Posted in css by dev1 on the May 26, 2007

<html>
    <
head
>
        <
style
type=text/css>
            body {
                background-color : #f7f7f7;
            }
            #sample1 {
                border-collapse : collapse;
                width : 510px;
                background-color : #fff;
                border-left : 1px solid #000;
                border-right : 1px solid #000;
            }
            #sample1 td {
                padding : 5px;
            }

            #sample2 {
                margin : auto; padding : 5px;
                width : 500px;
                background : #fff;
                border-left : 1px solid #000;
                border-right : 1px solid #000;
            }
        </style>
    </
head
>

    <body>

        <!– Method 1: Using tables –>
       
<table id=sample1align=center>
            <
tr
>
                <
td>
Sample text</td>
            </
tr
>
        </
table
>

        <hr />

        <!– Method 2: Using divs –>
       
<div id=sample2>
            Sample text
       
</div>

    </body>
</
html>

กฎการเขียน CSS

Posted in css, xHTML by dev1 on the May 26, 2007

 - Inheritance หากแปลตามตัวก็คือ การสืบทอด propertyบางตัว จะมีผลกับสิ่งที่อยู่ข้างในทั้งหมด เช่น

body{
color:green;
margin:5px;
}

สื่งที่อยู่ใน body จะมีฟ้อนต์เป็น สีเขียว ทั้งหมด แต่ margin จะทำเฉพาะ body เท่านั้น ไม่สืบทอดต่อไป

- Comment การคอมเม้นในไฟล์ .css จะใช้ /* เป็นการเปิด และ */ เป็นการปิด เช่น

/* COMMENTS CANNOT BE NESTED */

- Cascading Order คือ ลำดับความสำคัญของสไตล์ชีท

โดยธรรมชาติแล้ว ไฟล์.css จะถูกอ่านจากบนลงล่าง หากคุณเขียนซ้ำ class เดิม อันที่อยู่ด้านล่าง จะถูกทำเป็นลำดับสุดท้าย เช่น

.test{
color:red;
}
.test{
color:blue;
}

เมื่อคุณเรียกใช้คลาส ในhtml เช่น <div class=”test”> test test </div> จะได้ตัวหนังสือ test สีน้ำเงิน

ความสำคัญ ลำดับแรก !important
หากคุณกำหนด !important ไว้ใน value เช่น

p{
color:red!important;
}
p{
color:blue;
}

เมื่อเขียนแบบนี้ ในแท็ก <p> จะมีฟ้อนต์เป็น สีแดง

การคำนวณลำดับความสำคัญจาก การประกาศ class และ id
ให้ a เป็นจำนวนของ id b เป็นจำนวนของ class และ c เป็นจำนวนของ tag html

#id1 {xxx}                         /* a=1 b=0 c=0 –> เรียงตัวเลข abc = 100 */
UL UL LI.red {xxx}       /* a=0 b=1 c=3 –> เรียงตัวเลข abc = 013 */
LI.red {xxx}                  /* a=0 b=1 c=1 –> เรียงตัวเลข abc = 011 */
LI {xxx}                       /* a=0 b=0 c=1 –> เรียงตัวเลข abc = 001 */

ตัวเลขมากกว่า จะมีลำดับความสำคัญที่สูงกว่า จะเห็นว่า id มีความสำคัญสูงกว่า class หากเรียก id และ class พร้อมๆกันลักษณะที่กำหนด จะเป็นไปตาม id

ตัวอย่าง

<style>
ul li.test{ color:blue; }     /*012*/
li.test{color:red }            /*011*/
</style>
<ul>
<li class=”test”>คุณว่าจะได้สีอะไร</li>
</ul>

ลองนำโค้ดนี้ไป paste ในส่วน body ดู นะครับ หากตัวเลขมีค่าเท่ากัน สิ่งที่ประกาศไว้ลำดับสุดท้ายจะมีความสำคัญสูงกว่าครับ

Pseudo-classes and Pseudo-elements คือ class และ element พิเศษ มีวิธีเขียนได้ 2 รูปแบบ ดังนี้

selector: Pseudo-class { property: value }

or

selector: Pseudo-element { property: value }

selector.class: Pseudo-class { property: value }

or

selector.class: Pseudo-element { property: value }

Anchor Pseudo-classes เช่น

a:link { color: red }
a:hover {color:black; text-decoration:underline;}
a:active { color: blue; font-size: 125% }
a:visited { color: green; font-size: 85% }

a:link คือสถานะของลิ้งค์ a:hover คือ สถานะลิ้งค์เมื่อเอาเมาส์ไปแตะ a:active คือ สถานะเมื่อลิ้งค์หน้านั้นถูกเปิดอยู่ a:visited คือ สถานะลิ้งค์ที่ถูกเปิดและปิดไปแล้ว คุณสามารถกำหนด ให้มีรูปแบบต่างกันได้ ในกรณีนี้ เมื่อคุณ เขียน
<a href=”http://www.divland.com”> ลิ้งค์จะเป็นสีแดง เมื่อเอาเมาส์แตะ จะเป็นสีดำ มีเส้นใต้ หากเป็นการเปิดหน้าใหม่ คุณจะเห็นลิ้งค์ เป็นสีน้ำเงิน และเมื่อคุณปิดหน้านั้น ลิ้งค์ที่คุณได้กดไปแล้ว จะเป็นสีเขียว

First Line Pseudo-element
ในหน้าหนังสือพิมพ์ จะมีพาดหัวข่าวบรรทัดแรกตัวหนา ใหญ่ รูปแบบนั้น จะใช้ firstline

P:first-line {
font-variant: small-caps;
font-weight: bold }

First Letter Pseudo-element
ตามชื่อเลยครับ firstletter ก็คือการควบคุมตัวหนังสือตัวแรกนั่นเอง

P:first-letter { font-size: 300%; float: left }

ที่ใช้บ่อยๆ ก็คือการควบคุมลิ้งค์ ส่วน first line and first letter ก็ลองนำไปใช้กันดูครับ

Grouping คือ การรวมกลุ่มนั่นเอง เช่น

H1, H2, H3, H4, H5, H6 {
color: red;
font-family: sans-serif }

ลักษณะนี้หมายถึง  H1, H2, H3, H4, H5, H6จะมี สีแดง และฟ้อนต์แบบ sans-serif เอาไว้แยกส่วนที่ซ้ำๆกัน ออกมา เพื่อลดปริมาณโค้ด จากนั้น คุณค่อยกำหนดขนาดของ H1, H2, H3, H4, H5, H6 แต่ละอันไว้ด้านล่าง

คุณไม่จำเป็นต้องเขียน ซ้ำกันบ่อยๆ หากอันไหน มีลักษณะเหมือนกัน ก็แทรกเข้าไปแล้ว คั่นด้วย , ได้เลย

#leftnav, .rightnav a{
color:red;
}

แปลว่า ภายในขอบเขต id=”leftnav” และ ลิ้งค์ที่อยู่ใน ขอบเขต class=”rightnav” จะมีสีแดง

สร้างเว็บไซต์แบบ Tableless

Posted in css, xHTML by dev1 on the May 26, 2007

Tableless คืออะไร? หลายคนอาจจะสงสัยเมื่อได้ยินคำนี้เป็นครั้งแรก ถ้าแปลกันแบบกำปั้นทุบดินก็จะมีความหมายว่า “ไม่มีตาราง” แต่เมื่อคำว่า Tableless ปรากฎอยู่ในเรื่องของการสร้างเว็บไซต์ เราก็พอที่จะแปลความหมายของคำว่า Tableless ได้ว่า เป็น “การพัฒนาเว็บไซต์โดยไม่ใช้ตาราง” นั้นเอง

แต่เดิมที่นักพัฒนาเว็บหลายคนคงใช้แท็ก <table> ในการจัดการโครงสร้างของเว็บ ซึ่งจริงๆ แล้วตารางควรจะถูกใช้เมื่อต้องการนำเสนอข้อมูลที่เป็นกลุ่มก้อนมากกว่า เช่น การแสดงรายการผลสอบของวิชาหนึ่ง หากเราจัดข้อมูลใส่ในตาราง ผลที่ได้ก็จะประกอบด้วยคอลัมน์ของ รหัสนักเรียน ชื่อนักเรียน คะแนนที่ได้ หรือเกรดที่ได้ ส่วนการควบคุมการแสดงผลอื่นๆ เราก็ใช้ eXtensible HyperText Markup Language (XHTML) และ Cascading Style Sheets (CSS) แทนนั้นเอง

สำหรับเทคนิค Tableless นี้ บางคนก็เรียกว่า Tableless layout หรือไม่ก็ CSS Layout เพราะเราจะใช้ CSS เข้ามาแสดงบทบาทแทนที่ตารางในการจัดการโครงสร้างเว็บไซต์ โดย CSS นั้นจะทำการควบคุมแท็กต่างๆ เช่น <div> หรือ <span> ว่าควรจะมีขนาดเท่าใด ตำแหน่งอยู่ตรงไหน ใช้รูปแบบอักษรอะไร ขนาดเท่าไร ใช้สีอย่างไร ฯลฯ ดังนั้นการใช้เทคนิค Tableless ในการพัฒนาเว็บไซต์นี้จะได้ผลลัพธ์ที่สำคัญมากประการหนึ่งคือ การแยกแยะส่วนข้อมูล และส่วนที่ใช้ควบคุมการแสดงผลออกจากกัน เมื่อต้องการแก้ไขส่วนของการแสดงผลเราก็เพียงเข้าไปแก้ในส่วนที่ใช้ควบคุมซึ่งในที่นี้ก็คือ CSS นั้นเอง

เพราะฉะนั้นเราสามารถสรุปได้ว่าการออกแบบและพัฒนาเว็บไซต์ด้วยเทคนิค Tableless นั้น เราไม่ใช่จะไม่ใช้ Table เลย Table หรือตารางนั้นควรจะทำหน้าที่เฉพาะของมันนั้นก็คือ ใช้ในการแสดงข้อมูลที่มีความเกี่ยวเนื่องกัน เช่นตารางที่ใช้แสดงข้อมูลชื่อของสินค้า รหัสสินค้า ราคา และแหล่งผลิตเป็นต้น หรือใช้ในการแสดงข้อมูลต่างๆที่สมควรจะอยู่ในตาราง แต่จะไม่ใช่ในการควบคุมตำแหน่งการแสดงผลของวัตถุต่างๆ บนเว็บ

การศึกษาการใช้เทคนิค Tableless ในการพัฒนาเว็บไซต์นั้น จำเป็นที่จะต้องมีความรู้พื้นฐานในเรื่องของ CSS มาก่อน และควรทำการศึกษาตัวอย่างจากเว็บไซต์ที่ใช้ Tableless ในการพัฒนา เพื่อรวบรวมแนวคิดต่างๆในการออกแบบเพื่อใช้ในการพัฒนาต่อไป เช่น http://www.cssplay.co.uk, http://www.csszengarden.com, และ http://www.oswd.org เป็นต้น

บทความโดย : นฤพล ตั้งตรีรัตน์
บริษัท โวเน่ จำกัด(http://www.wone.co.th)

ฟังก์ชัน javascript เช็คความกว้างของ TextBox แบบ Multiline

Posted in JAVASCRIPT by dev1 on the May 25, 2007

function Count(text,long) {

var maxlength = new Number(long); // Change number to your max length.

if (text.value.length > maxlength){

text.value = text.value.substring(0,maxlength);

alert(” Only ” + long + ” chars”);

}

}

Next Page »