Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > VB.Net การคีย์ข้อมูลลงใน Datagridview โดยตรง และ Class create tools/control/object



 

VB.Net การคีย์ข้อมูลลงใน Datagridview โดยตรง และ Class create tools/control/object

 



Topic : 132934



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์




รบกวนขอคำแนะนำหน่อยครับ
A. ผมพึ่งเริ่มหัดเขียน vb.net โดยให้ User key ข้อมูลลง Datagridview โดยตรงมีปัญหาดังนี้
1. ต้องการให้ Cursor เลื่อนไปที่ Column ถัดไปทางขวา เมื่อกด Enter key ( เหมือนกับกด Tab key)
2. การกำหนด Format ของ Column ที่รับค่าเป็นจำนวนเงินมีจุดทศนิยม 2 ตำแหน่ง ชิดขวา
3. การกำหนด Format ของ Column ที่รับค่าเป็น Short Date โดย User ไม่ต้องกด “/” ในการคีย์ตัวเลข วว/ดด/ปปปป

B. อยากได้ตัวอย่าง Class ที่ Create/Inherit Object/Control มาใช้เอง โดยเราอาจเข้าไปเปลี่ยน Behavior บางอย่างด้วย เช่น การ Create
textbox ที่รับค่าการคีย์เป็นจำนวนเงินทศนิยม 2 ตำแหน่ง

ไม่ทราบว่าพอจะมีตัวอย่างให้ดู หรือคำแนะนำให้บ้างไหมครับ หรือมีที่ไหนรับสอนส่วนตัวแบบออนไลน์ในหัวข้อพวกนี้จะดีมาก กรุณาช่วยแนะนำให้ด้วยครับ

ขอบคุณมากครับ



Tag : .NET, VB.NET







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-01-17 14:23:56 By : dsk View : 3474 Reply : 14
 

 

No. 1



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

1.กดที่ลูกศร ซ้าย ขวา น่าจะง่ายสุด ถ้าต้องการให้ enter แล้วเลื่อน ให้เขียนใน keypress
2. เบื้องต้นตั้งค่า format ใน คอลัมน์ได้ ส่วน 0-9,. ก็ดักจับ ตอน keypress เอาได้
3.วันที่สามารถ ใส่ให้เลยได้โดย ใช้ event cellendedit คือเมื่อ พิมพ์ข้อมูลอื่นๆ แล้วให้มันใส่ วันที่ปัจจุบันใน คอลัมน์วันที่เลย
และ user ยัง แก้วันที่ได้ปกติ เช่นกัน คือไม่จำเป็นต้องพิมเองว่างั้นเถอะ


B ไปอ่านเรื่อง access modifier ให้คล่องซะก่อน

สรุป ให้ศึกษาเรื่อง keypress cellendedit access modifier ให้คล่องซะก่อน ค่อยมาลงมือเขียนต่อ ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-17 17:00:25 By : lamaka.tor
 


 

No. 2



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

A นอกจาก Event KeyPress ยังสามารถใช้ KeyUp, KeyDown,...ได้

1.
วิธีที่ 1 ส่งไม้ต่อให้ปุ่ม Tab (VB.NET)
Private Sub dataGridView1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
    If e.KeyData = Keys.Enter Then
        e.SuppressKeyPress = True
        SendKeys.Send("{Tab}")
    End If
End Sub


หรือ

วิธีที่ 2 แบบมีผลกับทุกปุ่ม (VB.NET)
Private Sub dataGridView1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
    e.SuppressKeyPress = True
    Dim iColumn As Integer = dataGridView1.CurrentCell.ColumnIndex
    Dim iRow As Integer = dataGridView1.CurrentCell.RowIndex

    'ถ้าอยู่คอลัมน์สุดท้าย
    If iColumn = dataGridView1.Columncount - 1 Then
        'ยังมีแถวถัดไป
        If dataGridView1.RowCount > (iRow + 1) Then
            'ให้ขึ้นแถวใหม่และโฟกัสคอลัมน์แรก
            dataGridView1.CurrentCell = dataGridView1(1, iRow + 1)
        Else
            'แต่ถ้าอยู่แถวสุดท้ายแล้วเอาไงต่อ เช่น ไปโฟกัสที่คอนโทรลอื่น, หรือวนกลับไปที่ cell แรก ฯลฯ
        End If
    Else
        'ถ้าไม่ใช่คอลัมน์สุดท้ายให้โฟกัสที่คอลัมน์ถัดไป(ทางขวา)
        dataGridView1.CurrentCell = dataGridView1(iColumn + 1, iRow)
    End If
End Sub


2. ถ้าไม่อยากกำหนดที่หน้า Design ก็ใช้ property DefaultCellStyle ได้ เช่น

รูปแบบทศนิยมสองตำแหน่ง (VB.NET)
dataGridView1.Columns.Items(i).DefaultCellStyle.Format = "0.00##"


หรือ

วิธีใช้ใน Event (VB.NET)
Private Sub dataGridView1_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs)
    If e.RowIndex = 0 And e.ColumnIndex = 6 Then
        e.CellStyle.Format = "N2"
    End If
End Sub


แล้ว

จัดชิดขวา (VB.NET)
dataGridView1.Columns("Money").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight


3. การกำหนดวันที่ทำได้หลายทาง เช่น

DefaultCellStyle (VB.NET)
MyDatagridview.Columns(4).DefaultCellStyle.Format = "dd/MM/yyyy"


dataGridViewCellStyle (VB.NET)
dataGridViewCellStyle.Format = "dd/MM/yyyy"


เมธอดToDateTime() (VB.NET)
Convert.ToDateTime()


เมธอด ToString() (VB.NET)
xxx.ToString()



B จากความต้องการไม่จำเป็นต้องสร้าง Control ใหม่ นำของแถมไป implement ก็เพียงพอแล้ว(ตามตัวอย่าง A2)
แต่ถ้าอยากลองทำจริงๆ โครงสร้างพื้นฐานก็หน้าตาประมาณนี้ครับ

Code (VB.NET)
Public Class MyTextBox
    Inherits TextBox

    'ส่วน Property
    Public Shadows Property SelectionStart As Integer
        Get
            '   Get Code
        End Get
        Set(ByVal value As Integer)
            '   Set code 
        End Set
    End Property

    'ส่วน Event
    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
        If Me.TextLength < 4  Then
            Me.ForeColor = Color.Red
        Else
            Me.ForeColor = Color.Black
        End If

        MyBase.OnTextChanged(e)
    End Sub
End Class


ตัวอย่างแหล่งข้อมูล
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/walkthrough-inheriting-from-a-windows-forms-control-with-visual-basic
https://www.codeproject.com/Articles/23295/UserControl-Textbox
https://www.codemag.com/Article/0102021/Understanding-Visual-Inheritance-in-.NET

*เนื่องจากไทยไม่ได้เป็นผู้คิดค้น ตำราไทยจึงสู้ของฝรั่งไม่ได้ แต่ของไทยมีดีที่อธิบายพื้นฐานได้ละเอียดสำหรับคนไทย

สำหรับคอร์สเรียนแบบจริงจังลองเสิร์ชดูครับ

----------------------
สุดท้ายที่สำคัญคือ English/google/youtube Skills
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-18 14:59:43 By : PhrayaDev
 

 

No. 3

Guest


ตอบความคิดเห็นที่ : 2 เขียนโดย : PhrayaDev เมื่อวันที่ 2019-01-18 14:59:43
รายละเอียดของการตอบ ::
ขอบคุณครับ อธิบายได้ละเอียดดีจริงๆ และชอบคำนี้มากครับ "เนื่องจากไทยไม่ได้เป็นผู้คิดค้น ตำราไทยจึงสู้ของฝรั่งไม่ได้"

และการเขียนคำอธิบายแต่ละครั้งที่เข้ามาตอบ ดูดีมากครับ คงต้องเอาไปเป็นแบบอย่าง เพราะผมเขามาตอบชาวบ้านเขา

ทีไร คนอ่านเป็นงง


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-18 15:33:39 By : บัญดิษฐ
 


 

No. 4



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

ตอบความคิดเห็นที่ : 3 เขียนโดย : บัญดิษฐ เมื่อวันที่ 2019-01-18 15:33:39
รายละเอียดของการตอบ ::
ขอบคุณสำหรับคำชมครับ...


---------
ลบข้อความเกิน


ประวัติการแก้ไข
2019-01-18 16:09:56
2019-01-18 16:15:07
2019-01-18 20:22:11
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-18 16:08:56 By : PhrayaDev
 


 

No. 5



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


@ PhrayaDev ...... ขอบคุณมากๆเลยครับ ตอบตรงประเด็น มีตัวอย่างให้ดู และมีแหล่งอ้างอิงให้หาความรู้เพิ่มเติมอีก .... ผมพยายาม Search หาคำตอบจาก Google แต่ก็หาได้ไม่ค่อยตรงประเด็น ผมจะลองไปทำดูครับ และคงต้องฝึกฝนอีกนานกว่าจะเข้าใจธรรมชาติของ VB
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-18 21:21:27 By : dsk
 


 

No. 6



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : lamaka.tor เมื่อวันที่ 2019-01-17 17:00:25
รายละเอียดของการตอบ ::
... ใส่ความคิดเห็นตรงนี้....... -ขอบคุณมากครับสำหรับคำแนะนำ ผมจะไปหาข้อมูลศึกษาเพิ่มเติมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-18 21:23:05 By : dsk
 


 

No. 7



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : PhrayaDev เมื่อวันที่ 2019-01-18 14:59:43
รายละเอียดของการตอบ ::
แจ่ม +1

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-19 09:47:13 By : Chaidhanan
 


 

No. 8



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : PhrayaDev เมื่อวันที่ 2019-01-18 14:59:43
รายละเอียดของการตอบ ::

รบกวนอีกทีครับ ผมลองไปทำตามคำแนะนำแล้ว มีปัญหาดังนี้ครับ
1. ตามคำแนะนำ "วิธีที่ 1 ส่งไม้ต่อให้ปุ่ม Tab (VB.NET)" และ "วิธีที่ 2 แบบมีผลกับทุกปุ่ม (VB.NET)"

เมื่อกดปุ่ม Enter โดยไม่มีการ Input ข้อมูลอื่นก่อน Cursor จะเลื่อนไปทางขวา ตามที่ต้องการครับ

แต่หากมีการ Input ข้อมูลอื่นก่อนใน Cell นั้นแล้วกด Enter ... Cursor จะเลื่อนลงมาที่ Row ข้างล่าง ไม่เลื่อนไปทางขวาครับ
อย่างนี้ถ้าต้องการให้ Cursor เลื่อนไปทางขวา จะต้องทำอย่างไรครับ

2. ที่ Column Date ผม Set ไว้อย่างนี้
DataGridView1.Columns(6).DefaultCellStyle.Format =
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern

DataGridView1.Rows.Item(0).Cells(6).Value = Today() ' วันที่บันทึกรายการ

เวลา User แก้ไขวันที่ใน Column(6) User ต้อง Key "/" ด้วย หากผมต้องการให้ User Key เฉพาะตัวเลข จะต้องทำอย่างไรครับ
เช่น ให้ User Key 01012562 แทนที่จะต้อง Key 01/01/2562

ขอบคุณมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-19 17:47:42 By : dsk
 


 

No. 9



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

ตอบความคิดเห็นที่ : 8 เขียนโดย : dsk เมื่อวันที่ 2019-01-19 17:47:42
รายละเอียดของการตอบ ::
ก่อนอื่นตัวอย่างที่ให้ไปยังไม่ใช่ มาม่า ครับ
และจากการตรวจสอบการทำงานใน debug (ตอนโพสต์ยัง) ผมขอสรุปแบบห้วนๆ ดังนี้

1.ไม่มี Event ไหนสามารถเข้าถึงการรับค่า Key จาก Edit mode ของ Textbox control ใน Datagridview ได้โดยตรง ยกเว้น embed event หรืออีเวนต์ฝังคอนโทรล ซึ่งจะถูกสร้างขึ้นเป็นแบบ private หรือสามารถใช้ได้เฉพาะภายในคลาสของ Control เท่านั้น
...ควาญจะบังคับช้างต้องขึ้นขี่ช้าง วิธีการคือต้องหาทางเข้าถึง embed event ที่ว่าให้ได้ หรือก็คือ การ override ฟังก์ชันของ Datagridview ซึ่งหมายความว่าต้องสร้าง User Control ขึ้นมาใช้เองโดยให้สืบทอดจาก Datagridview นั่นเอง ...(แต่จริงๆ อาจมีวิธีเล่นกับ Event แบบรวมมิตรเพื่อเปลี่ยนผลลัพธ์ของคำสั่งเมื่อออกจาก edit mode ได้ ลองเล่นดูครับ...ผมลองมาสามวันแต่ล้มเหลวเพราะกำจัด Infinite Loop ของการรับส่งค่า Key ยังไม่ได้)

2.แบ่งเป็น 2 กรณี คือ ข้อมูลของวันที่ ในฐานข้อมูลถูกเก็บแบบ String กับ DateTime

2.1 ถ้าเป็น String วิธีการส่วนใหญ่คือเล่นกับ String
- ใช้ TextChanged event ป้อน / หลังจากพิมพ์ตัวอักษรที่ 2 และ 5 ในขณะ Input
- เขียนโค้ดเปลี่ยนฟอร์แมตวันที่โดยให้เพิ่ม / ในตำแหน่งที่ 3 และ 6 ใน CellEndEdit Event

2.2 เมื่อไหร่เป็น DateTime การจัดการขั้นต่อไปต้องมีแบบแผนหรืออยู่ในกรอบ
- Crack Event เพราะไม่มี Event ไหนเข้าถึง edit mode ของ Textbox ใน Datagridview ได้โดยตรง และไม่สามารถใช้วิธีใน 2.1 มาแก้ไขได้เพราะติด Pre-validating event ตรวจสอบ datatype ถ้า input มาผิดฟอร์แมตระบบจะแจ้ง error ตรงนี้คือ Event ที่เราจะดึง String ของ DateTime มาแก้ไขก่อนยัดเข้าไปใหม่ โดยขั้นตอนการแตก String ใช้ Date​Time.​Try​Parse​Exact
- ใช้ MaskedTextBox แทน TextBox ใน DataGridView เพื่อหลีกเลี่ยงการตรวจสอบรูปแบบข้อมูลขณะ Input(หรือ edit mode) ...แต่แน่นอนว่าต้องสร้าง User Control ที่สืบทอดจาก DataGridView ...ลองค้นคว้าดูครับ

Quote:
การ Format ด้วย DefaultCellStyle จะได้ผลก็ต่อเมื่อมีการกำหนด Type ของข้อมูลใน Database/Datasource ที่สอดคล้องกับคอลัมน์ของ DataGridView แต่รูปแบบที่ผมให้ไปใช้การไม่ได้ ถ้ากำหนด DateTime เป็น "dd/MM/yyyy" ข้อมูลจะถูกแสดงเป็น "dd-MM-yyyy" เพราะ / เป็นอักขระที่ต้องทำ escape string ด้วย ' แบบนี้ "dd'/'MM'/'yyyy" จึงจะแสดงรูปแบบข้อมูลที่ต้องการได้ถูกต้อง(ไม่เห็นทักเลยครับ)



--------------
ไม่สามารถทำ Step-by-step ได้ เพราะปัญหานี้ทะลุระดับพื้นฐาน คงต้องร่ายยาว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-22 19:05:19 By : PhrayaDev
 


 

No. 10



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 9 เขียนโดย : PhrayaDev เมื่อวันที่ 2019-01-22 19:05:19
รายละเอียดของการตอบ ::
ขอคุณมากครับ คำตอบที่ได้รับเป็นประโยชน์มากจริงๆ ทำให้เข้าใจได้มากขึ้น บางอย่างก็หาคำตอบไม่ได้เพราะความไม่รู้ ผมพยายามอยากจะรู้ลึกๆแบบนี้ คงต้องใช้เวลาศึกษาอีกเยอะ สุดยอดจริงๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-22 23:32:33 By : dsk
 


 

No. 11



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

ผมลง Binary ไว้ใน Blogger แล้ว ลองเอามา Test ดูได้ครับ

SS

--------
ผมก็ได้ศึกษาค้นคว้าในส่วนที่ไม่รู้จากคำถามของกระทู้ด้วย ขอบคุณเช่นกันครับ


ประวัติการแก้ไข
2019-01-27 17:59:29
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-23 00:34:21 By : PhrayaDev
 


 

No. 12



โพสกระทู้ ( 821 )
บทความ ( 0 )



สถานะออฟไลน์


ตัวจับ enter ใน datagridview
น่าจะต้องทำเป็น class ขึ้นมาครับ

https://stackoverflow.com/questions/1745943/datagridview-enter-key
https://stackoverflow.com/questions/32011834/determine-celltype-of-datagridview-in-processcmdkey-processdialogkey-vb-net-2010
https://www.codeproject.com/Articles/34061/Cheating-the-DataGridView
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-23 15:50:55 By : fonfire
 


 

No. 13



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : PhrayaDev เมื่อวันที่ 2019-01-23 00:34:21
รายละเอียดของการตอบ ::
ขอบคุณมากครับ จะลองศึกษาดูครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-11 22:02:26 By : dsk
 


 

No. 14



โพสกระทู้ ( 13 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 12 เขียนโดย : fonfire เมื่อวันที่ 2019-01-23 15:50:55
รายละเอียดของการตอบ ::
.. ขอบคุณมากครับผม เป็นประโยชน์มากเลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-11 22:03:05 By : dsk
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : VB.Net การคีย์ข้อมูลลงใน Datagridview โดยตรง และ Class create tools/control/object
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่