บันทึก asp.net :: การทำ user control “วันที่” ด้วยตนเอง มั่วอยู่สามวันได้มาแบบนี้
Posted พฤศจิกายน 21, 2008
on:ทดสอบใน visual studio 2005 และ visual studio 2008 ด้วย ms sql server 2005
โดย add New Item เป็นประเภท Web User Control ตั้งชื่อว่า dateControl.ascx
ซึ่งจะมันจะสร้างไฟล์ code behide ที่ชื่อว่า dateControl.ascx.vb ขึ้นมาให้
ไปหน้า source ของไฟล์ dateControl.ascx -> เขียนโค๊ดได้ดังนี้
<%@ Control Language=”VB” AutoEventWireup=”false” CodeFile=”dateControl.ascx.vb” Inherits=”myusercontrol_dateControl” %>
<asp:DropDownList ID=”ddlDateControl” runat=”server”>
</asp:DropDownList>
<asp:DropDownList ID=”ddlMonthControl” runat=”server”>
<asp:ListItem Value=”1″>มกราคม</asp:ListItem>
<asp:ListItem Value=”2″>กุมภาพันธ์</asp:ListItem>
<asp:ListItem Value=”3″>มีนาคม</asp:ListItem>
<asp:ListItem Value=”4″>เมษายน</asp:ListItem>
<asp:ListItem Value=”5″>พฤษภาคม</asp:ListItem>
<asp:ListItem Value=”6″>มิถุนายน</asp:ListItem>
<asp:ListItem Value=”7″>กรกฏาคม</asp:ListItem>
<asp:ListItem Value=”8″>สิงหาคม</asp:ListItem>
<asp:ListItem Value=”9″>กันยายน</asp:ListItem>
<asp:ListItem Value=”10″>ตุลาคม</asp:ListItem>
<asp:ListItem Value=”11″>พฤศจิกายน</asp:ListItem>
<asp:ListItem Value=”12″>ธันวาคม</asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID=”ddlYearControl” runat=”server”>
</asp:DropDownList>
และในหน้า dateControl.ascx.vb เขียนดังนี้
Imports System.Globalization
Partial Class myusercontrol_dateControl
Inherits System.Web.UI.UserControl
Public MonthValue As String
Public yearValue As String
Public m_minYear As Integer = Year(Now) – 10
Public m_maxYear As Integer = Year(Now)
Public dateValue As Integer
Public Property DVal() As Integer
Get
dateValue = ddlDateControl.SelectedValue
Return dateValue
End Get
Set(ByVal value As Integer)
dateValue = ddlDateControl.SelectedValue
End Set
End Property
Public Property MVal() As String
Get
MonthValue = ddlMonthControl.SelectedValue
Return MonthValue
End Get
Set(ByVal value As String)
MonthValue = ddlMonthControl.SelectedValue
End Set
End Property
Public Property YVal() As String
Get
yearValue = ddlYearControl.SelectedValue – 543
Return yearValue
End Get
Set(ByVal value As String)
yearValue = ddlYearControl.SelectedValue – 543
End Set
End Property
Public Property YearMin() As Integer
Get
Return m_minYear
End Get
Set(ByVal value As Integer)
m_minYear = value
End Set
End Property
Public Property YearMax() As Integer
Get
Return m_maxYear
End Get
Set(ByVal value As Integer)
m_maxYear = value
End Set
End Property
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
ddlDateControl.Items.Add(“วันที่”)
For i As Integer = 1 To 31
ddlDateControl.Items.Add(i)
Next
ddlYearControl.Items.Add(“ปี พ.ศ.”)
Dim j As Integer = m_maxYear
While j > m_minYear
ddlYearControl.Items.Add(j)
‘Response.Write(j & “<br>”)
j = j – 1
End While
End If
End Sub
End Class
เวลาจะเอามาใช้ ก็ Add New Item -> web form ขึ้นมาใหม่
แล้วในหน้า design เลือกไฟล์ User Control ที่สร้างไว้เมื่อกี้(ไฟล์ dateControl.ascx) ลากมาใช้ได้เลย
เสมือนกับเราลาก Control ทางด้านซ้ายมือมาใช้ แล้วก็กำหนดค่า id ให้แตกต่างกัน..ถ้าเราลากมาหลายตัวนะคะ
เวลากดปุ่มเราก็ view ค่าออกมาดู
Response.Write(“เกิดวันที่ ” & dateUC1.DVal & “/” & dateUC1.MVal & “/” & dateUC1.YVal)
ปล.1
เขียนถูกๆผิดๆ
ตอนแรกจะวนลูป ให้เพิ่มเดือนอัตโนมัติ
แต่ติดตรงที่ไม่รู้คำสั่ง add value ให้กับ dropdownlist
รู้แต่คำสั่ง Items.Add(“”) โดยใช้ CultureInfo(“th-TH”) ช่วย
ติดมาเป็นวันๆ เลยใช้วิธีแอดจาก tools ซะเลย
แล้วตกลงคำสั่ง add value ให้กับ dropdownlist มันคืออะไรคะ.. ???
3 Responses to "บันทึก asp.net :: การทำ user control “วันที่” ด้วยตนเอง มั่วอยู่สามวันได้มาแบบนี้"
If Page.IsPostBack Then
Response.Write(“เกิดวันที่ ” & dateUC1.DVal & “/” & dateUC1.MVal & “/” & dateUC1.YVal)
End If
รู้สึกว่า การับค่าจะแปลกๆ เนาะ ต้องเช็ค Page.IsPostBack ก่อน ไม่งั้น error
System.FormatException: Input string was not in a correct format.
ทำตามคำแนะนำของ คุณ wit แล้วได้จริงๆ ด้วย ขอบคุณค่ะ *0* loop for ใส่ค่าเดือนภาษาไทยได้เลยไม่ต้องมานั่งกรอก
‘ show month ใช้ CultureInfo(“th-TH”) ******************
Dim CU As CultureInfo = New CultureInfo(“th-TH”)
Dim M2 As String = “MMMM”
Dim DX As DateTimeFormatInfo = CU.DateTimeFormat
For i As Integer = 1 To 12
Dim DATE1 As New Date(2008, i, 1)
DropDownList1.Items.Add(New ListItem(DATE1.ToString(M2, DX), i))
Next
1 | wit
พฤศจิกายน 21, 2008 ที่ 10:24 am
You can manually add value to dropdownlist via list items like this:
ddlMonthControl.Items.Add(New ListItem(“your_text”, “your_value”))