Archive for พฤศจิกายน 2008
ส่วนใหญ่ทำในโค๊ด behind..
1. ดึงข้อมูลแต่ละคอลัมน์ได้ด้วยคำสั่ง (code behind)
text1.text = CStr(dt.Rows(0).Item(“name_eng”).ToString)
2. ดึงข้อมูลมาแสดงใน dropdownlist
ในหน้า html
<asp:DropDownList ID=”ddlTitleNameTH” runat=”server” AutoPostBack=”True”>
</asp:DropDownList>
ใน code behind
‘ สร้างตัวแปร nTH รับค่าจากฐานข้อมูล
‘แล้วเพิ่มตัวเลือกใน dropdownlist ให้ครบ ด้วยคำสั่ง .Items.Add(New ListItem(“นาง”, “นาง”).ToString)
‘ ให้ dropdownlist เลือกค่าที่เท่ากับที่ดึงมาจากฐานข้อมูล ออกมาแสดง
Dim nTh As String = Trim(CStr(dt.Rows(0).Item(“title_name_thai”).ToString))
ddlTitleNameTH.Items.Add(New ListItem(“นาย”, “นาย”).ToString)
ddlTitleNameTH.Items.Add(New ListItem(“นาง”, “นาง”).ToString)
ddlTitleNameTH.Items.Add(New ListItem(“นางสาว”, “นางสาว”).ToString)
ddlTitleNameTH.SelectedIndex = ddlTitleNameTH.Items.IndexOf(ddlTitleNameTH.Items.FindByValue(nTh))
thank
http://www.velocityreviews.com/forums/t89868-dropdownlist-default-selected.html
3. ดึงข้อมูลจากฐานข้อมูลมาแสดงใน radiobutton
If Trim(CStr(dt.Rows(0).Item(“sex”).ToString)) = “ชาย” Then
radiMale.Checked = True
radiFemale.Checked = False
ElseIf Trim(CStr(dt.Rows(0).Item(“sex”).ToString)) = “หญิง” Then
radiMale.Checked = False
radiFemale.Checked = True
End If
ดึงข้อมูลด้วย gridview แล้วคลิกลิงค์ เปิด popup พร้อมแสดงข้อมูล (popup ไม่ใช้ window.open แต่ใช้ CSS)
Posted พฤศจิกายน 27, 2008
on:1. สไตล์ pop up เอาไปใส่ในไฟล์ .css
.white_content {
display: none;
position: absolute;
top: 25%;
left: 25%;
width: 300px;
height: 50%;
padding: 16px;
z-index:1002;
overflow: auto;
background-color:#FFBFBF;
border-bottom: 2px solid #F9F9F9;
border-right: 2px solid #F9F9F9;
border-left:1px solid #EFE4E4;
border-top:1px solid #EFE4E4;
}
2. ลิงค์ไฟล์ .css เข้ามาใช้ในไฟล์ xxx.aspx
<link href=”../App_Themes/themeForm/themeForm.css” rel=”stylesheet” type=”text/css” />
3. ในไฟล์ xxx.aspx ให้ดึงข้อมูลมาไว้ใน gridview(อย่าลืมใส่ DataKeyNames) โค๊ดดังนี้
<asp:GridView ID=”GridView1″ runat=”server” DataKeyNames=”member_id”
AutoGenerateColumns=”False”>
<Columns>
<asp:BoundField DataField=”member_id” HeaderText=”รหัส”>
<ItemStyle Width=”100px” />
</asp:BoundField>
<asp:BoundField DataField=”first_name” HeaderText=”ชื่อ”>
<ItemStyle Width=”100px” />
</asp:BoundField><asp:TemplateField>
<ItemTemplate>
<a href=”javascript:void(0);” onclick=”showpop( ‘<%# DataBinder.Eval(Container.DataItem,”last_name”).tostring%>’);”>click</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
4. สร้าง div ไว้ระหว่าง <form></form> เอาไว้นอก GridView โค๊ดดังนี้
<div id=”light” class=”white_content”>
<span id=”showw”></span>
<br />
<a href = “javascript:void(0)” onclick = “hidepop()”>Close</a>
</div>
5. สร้าง javascript ไว้ระหว่าง <head></head> โค๊ดดังนี้
<script language=”javascript” type=”text/javascript”>
function showpop(showw){
document.getElementById(‘showw’).innerHTML=showw;
document.getElementById(‘light’).style.display=’block’;}
function hidepop(){
document.getElementById(‘light’).style.display=’none’;}
</script>
ส่งค่าที่ต้องการแสดง ผ่าน javascript โดยให้แสดงผ่าน <span id=”showw”></span>
จบ…
tips เกี่ยวกับการใช้ DataList
Posted พฤศจิกายน 25, 2008
on:1. แสดงค่าในแต่ละ field แบบเจาะจง
ในหน้า xxx.aspx สามารถใส่แบบนี้ได้
<asp:DataList ID=”DataList1″ runat=”server” GridLines=”horizontal” BorderWidth=”0px”>
<ItemTemplate>
<div style=”border:0px;”>
ตำแหน่ง :<%#DataBinder.Eval(Container.DataItem, “positions”)%>
<br />
สาขา : <%#DataBinder.Eval(Container.DataItem, “branch”)%>
<br />
เขต : <%#DataBinder.Eval(Container.DataItem, “zone”)%>
</div>
</ItemTemplate>
<SelectedItemStyle BorderWidth=”0px” />
<ItemStyle BorderWidth=”0px” />
</asp:DataList>
ใส่ detail view ใน gridview
Posted พฤศจิกายน 25, 2008
on:ลองทดสอบเอา detail view มาใส่ใน gridview ทำตาม cd สอน
บางคำสั่งก็ใช้ได้บางอันก็ใช้ไม่ได้เหมือนใน cd (อาจจะเกิดจากการมั่วไปมั่วมา)
แล้วในที่สุดก็ได้… แต่พี่ที่ทำงานเค้าต้องการอีกแบบ
คือที่ gridview ปกติจะแสดง รายละเอียดออกมานิดหน่อย
แต่เมื่อเรา้คลิกที่รายละเอียดของแถวนั้น ให้แสดงรายละเอียดทั้งหมดทุกตัวอักษร
ให้แสดงออกมาในแถวนั้นๆ อืมม งงแฮะ
แต่ที่ลองทำนี้ต้อง select ตั้งสองครั้ง
แต่ก็พอใช้ได้ ถูๆ ไถๆ ตามอัถภาพ – -“
บันทึกวิธีทำ
1. ทำหน้า xxx.aspx มา
2. ลาก gridview มา
3. ให้ AutoGenerateColumns=”False”
4. กำหนด DataKeyNames=”member_id”
5. ใน <column></column> ให้ใส่คอลัมน์ของเราเข้าไป เช่น
<asp:BoundField DataField=”member_id” SortExpression=”member_id” headertext=”id” >
</asp:BoundField>
โค๊ดหน้า xxx.aspx ทั้งหมดก็มีโค๊ดดังนี้
<form id=”form1″ runat=”server”>
<asp:Label ID=”lbl1″ runat=”server”></asp:Label>
<asp:GridView ID=”GridView1″ runat=”server” BackColor=”White”
BorderColor=”#CCCCCC” BorderStyle=”None” BorderWidth=”1px” CellPadding=”3″
AutoGenerateColumns=”False” Width=”195px” DataKeyNames=”member_id”>
<RowStyle ForeColor=”#000066″ />
<FooterStyle BackColor=”White” ForeColor=”#000066″ />
<PagerStyle BackColor=”White” ForeColor=”#000066″ HorizontalAlign=”Left” />
<SelectedRowStyle BackColor=”#669999″ Font-Bold=”True” ForeColor=”White” />
<HeaderStyle BackColor=”#006699″ Font-Bold=”True” ForeColor=”White” />
<Columns>
<asp:BoundField DataField=”member_id” SortExpression=”member_id” headertext=”id” >
<HeaderStyle HorizontalAlign=”Left” />
</asp:BoundField>
<asp:BoundField DataField=”first_name” SortExpression=”first_name” headertext=”ชื่อ” >
<HeaderStyle HorizontalAlign=”Left” />
</asp:BoundField>
<asp:BoundField DataField=”last_name” SortExpression=”last_name” headertext=”รายละเอียด” >
<HeaderStyle HorizontalAlign=”Left” />
</asp:BoundField>
<asp:CommandField ShowEditButton=”True” />
<asp:CommandField ShowSelectButton=”True” />
<asp:CommandField ShowDeleteButton=”True” />
</Columns>
</asp:GridView>
<asp:DetailsView ID=”DetailsView1″ runat=”server” Height=”50px” Width=”125px”
AutoGenerateRows=”False”>
</asp:DetailsView>
</form>
6. ในหน้า xxx.aspx.vb มีโค๊ดทั้งหมดดังนี้
Option Explicit On
Option Strict On
Imports System.Data
Imports System.Data.SqlClient
Partial Class showEmp_showsub
Inherits System.Web.UI.Page
Public Enum XCol
detailcol = 2
productid
categoryid
unitprice
unitsinstock
amount
discontinued
End Enum
Private Sub ProductsData(Optional ByVal productname As String = “”)
Dim strsql As String = “select * from tblMembers”
Dim dt As New DataTable
Dim conn1 As New SqlConnection(ConfigurationManager.ConnectionStrings(“connintranet”).ConnectionString)
Dim da As New SqlDataAdapter(strsql, conn1)
da.Fill(dt)
dt.Columns.Add(“รหัส”, GetType(Integer), “member_id”)
GridView1.DataSource = dt.DefaultView
MyGridBind()
End Sub
Private Sub MyGridBind()
Dim X1() As String = {“member_id”}
GridView1.DataKeyNames = X1
GridView1.DataBind()
End Sub
Protected Sub GridView1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.Load
If Not Page.IsPostBack Then
Me.ProductsData()
Me.MyGridBind()
Else
If Session(“data”) Is Nothing Then
Me.ProductsData()
Else
GridView1.DataSource = Session(“data”)
End If
End If
End Sub
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
Response.Write(“ddddddddd”)
Me.MyGridBind()
End Sub
Protected Sub GridView1_SelectedIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSelectEventArgs) Handles GridView1.SelectedIndexChanging
Dim a1 As DataKey = GridView1.DataKeys(e.NewSelectedIndex)
‘lbl1.Text = CStr(a1(0))
Dim strsql2 As String = “select * from tblMembers where member_id=” & CInt(a1(0))
Dim dt2 As New DataTable
Dim conn2 As New SqlConnection(ConfigurationManager.ConnectionStrings(“connintranet”).ConnectionString)
Dim da2 As New SqlDataAdapter(strsql2, conn2)
da2.Fill(dt2)
DetailsView1.DataSource = dt2
DetailsView1.DataBind()
GridView1.Rows(e.NewSelectedIndex).Cells(XCol.detailcol).Controls.Add(DetailsView1)
End Sub
End Class
ปล.
– ในซัพโพซิเยอร์ Enum XCol นั้นยังงงอยู่ว่าใช้ทำอะไรกันแน่ ถ้าเอาไว้อ้างคอลัมน์ ทำไมต้องประกาศออกมาเยอะแยะ (เพราะไม่ได้ทำตามขั้นตอนตั้งแต่แผ่นแรก)
– ข้องใจกับการ connect database จากที่เคยเขียน php พี่ๆ เค้ามักบอกว่าถ้าเราเปิด connect ไว้โดยไม่ต้องปิด จะทำให้เว็บเร็วเพราะการที่เปิดประตูไว้ เมื่อคนจะเข้าจะออกก็ไม่ต้องเสียเวลาปิดประตู(ปิด connect) แต่เท่าที่เห็น asp.net เน้นการ ปิด connect แล้วตกลงอันใหนดีกว่ากันล่ะ ???
ช่วงนี้เครียดๆ เลยอยากเปลี่ยนทรงผม เห็นในอินเตอร์เน็ตทรงเก๋กู๊ดกันทั้งนั้น
เลยตัดหน้าตัวเองใส่หัวคนอื่นซะเลย สวยเช้ง
แต่เพื่อนทักว่า แก่…
หมดอารมณ์ที่จะรีทัชต่อ
เซ็งเป็ด (- -“)( -*-) ไปไกลๆ เลยไป๊
tip การใช้ gridview ใน asp.net
Posted พฤศจิกายน 24, 2008
on:1. ถ้าจะให้ delete ได้จะต้องใส่ DeleteCommand (ใน control sqlDataSource มีทูลช่วย) และต้องใส่ DataKeyNames ตัวอย่างเช่น
<asp:GridView ID=”GridView1″ CssClass=”tblForm1″ runat=”server” AutoGenerateColumns=”False” DataSourceID=”SqlDataSource1″ AllowPaging=”True” BackColor=”LightGoldenrodYellow” BorderColor=”Tan” BorderWidth=”1px” CellPadding=”2″ ForeColor=”Black” GridLines=”None” BorderStyle=”Dotted” PageSize=”20″ Width=”699px” DataKeyNames=”empid”>
ใส่ในหน้า code behide ก็ได้(สำหรับหน้าที่รับค่ามา)
SqlDataSource1.DeleteCommand = “DELETE FROM tblEmployee WHERE [empid] = @empid”
SqlDataSource1.SelectCommand = “SELECT empid, name_thai, sname_thai, name_eng, sname_eng, positions, branch, zone, FileData1 FROM tblEmployee”
SqlDataSource1.UpdateCommand = “UPDATE tblEmployee SET name_thai = @name_thai, sname_thai = @sname_thai WHERE (empid = @empid)”
2. วิธีการทำปุ่ม ยืนยัน (Javascript confirm) เมื่อต้องการลบข้อมูลใน gridview
เิพิ่ม CommandField ชนิด delete มาก่อน แล้วดูใน source code จะเห็นเป็น
<asp:CommandField ShowDeleteButton=”True” DeleteText=”ลบ” />
แต่รูปแบบนี้จะใส่ javascript ไม่ได้ จึงต้องไป edit ใช้คำสั่ง convert this field into a template
ซึ่งจะทำให้ source code เราเปลี่ยนไป แล้วจึงจะใส่โค๊ดที่ทำไฮไลไว้ ดังนี้
<ItemTemplate>
<asp:LinkButton ID=”LinkButton1″ runat=”server” CausesValidation=”False” CommandName=”Delete” Text=”ลบ” OnClientClick=”return confirm(‘Delete’);” ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
เครดิต http://www.greatfriends.biz/webboards/msg.asp?b=SURREALIST&id=63505 ความคิดเห็นREPLY #12 (63634) คุณ jnithi
3. การทำลิงค์ แล้วส่งค่า id ไปกับลิงค์ ใน gridview
<asp:HyperLinkField DataNavigateUrlFields=”empid” DataNavigateUrlFormatString=”editEmpBasic.aspx?empid={0}” Text=”แก้ไข” />
4. การ หาผลรวม summary ในส่วน footer ของ gridview ต้องใส่โค๊ด หลังจาก gridview.databind() เส็รจแล้ว
โดยต้องเปิด showfooter = true ก่อน
Private Sub summa()
Dim sum1 As Integer = CType(dt.Compute(“sum(empid)”, “”), Integer)
Dim sum2 As Integer = CType(dt.Compute(“sum(bdate)”, “”), Integer)
GridView1.FooterRow.Cells(0).Text = sum1.ToString(“#0.00”)
GridView1.FooterRow.Cells(1).Text = sum2.ToString(“#0.00”)
End Sub
asp.net มันไม่มี autonumber เหมือนกับใน php
ทำให้เวลาเพิ่มข้อมูลใหม่ ค่า id จะต้องเพิ่มขึ้นอีก 1
ก็นึกได้แต่วิธีบ้านๆ ด้วยการ select max ออกมา แล้วบวก 1
คิดว่ามันน่าจะมีคำสั่งอื่นที่สะดวกกว่านี้นะ
1. ประกาศตัวแปร
Public con As New SqlConnection(ConfigurationManager.ConnectionStrings(“intranetConnectionString2”).ConnectionString)
Public maxid As Integer
Public Shared msgerror As Boolean = False
2. เมื่อเพจโหลด
Dim cm_maxid As New SqlCommand(“SELECT MAX(empid)FROM tblEmployee”, con)
con.Open()
If IsDBNull(cm_maxid.ExecuteScalar()) Then
maxid = 1000
Else
maxid = CInt(cm_maxid.ExecuteScalar()) + 1
End If
con.Close()ปล.ต้องใช้คำสั่ง IsDBNull เพื่อเช็คผลของการ select ไม่งั้น error
3. เมื่อคลิกปุ่ม submit เพื่อบันทึก
Dim ch_maxid As Integer = maxid
Dim name_th As String = txtNameTh.TextDim cm_addmember As New SqlCommand(“INSERT INTO tblEmployee(empid,name_thai,sname_thai,name_eng,sname_eng) VALUES(” & maxid & “,'” & txtNameTh.Text & “‘,'” & txtSnameTh.Text & “‘,'” & txtNameEng.Text & “‘,'” & txtSnameEng.Text & “‘)”, con)
con.Open()
Dim m_identity As Integer = 0
cm_addmember.ExecuteNonQuery()
con.Close()
If msgerror = False Then
Response.Write(“เพิ่มข้อมูลแล้วค่ะ”)
Response.AddHeader(“Refresh”, “5”)
End If
บันทึก asp.net :: การอัพโหลดรูป ด้วย asp.net (ใช้ javascript แจ้งเตือน)
Posted พฤศจิกายน 22, 2008
on:ในหน้า code behide
ขั้นแรก ต้องใส่
Imports System.IO
แล้วเมื่อเหตุการณ์กดปุ่ม “อัพโหลดรูปภาพ” เขียนโค๊ดดังนี้
Dim CurrentFileName As String
Dim CurrentPath As StringCurrentFileName = FileUpload1.FileName
If (Path.GetExtension(CurrentFileName).ToLower <> “.jpg”) And (Path.GetExtension(CurrentFileName).ToLower <> “.gif”) Then
Me.ClientScript.RegisterClientScriptBlock(GetType(String), “a1”, “<script language=’javascript’>alert(‘คุณเลือกไฟล์ไม่ถูกต้อง !!!’);</script>”)
Exit Sub
End IfIf FileUpload1.PostedFile.ContentLength > 131072 Then
Me.ClientScript.RegisterClientScriptBlock(GetType(String), “a2”, “<script language=’javascript’>alert(‘ขนาดของไฟล์ใหญ่เกินไป ซึ่งต้องไม่เกิน 128 KB !!!’);</script>”)
Exit Sub
End IfCurrentPath = Request.PhysicalApplicationPath
CurrentPath += “\images\employeePIC\emp_”If FileUpload1.HasFile Then
CurrentPath += CurrentFileNameFileUpload1.SaveAs(CurrentPath)
Me.ClientScript.RegisterClientScriptBlock(GetType(String), “a3”, “<script language=’javascript’>alert(‘อัพโหลดไฟล์ เรียบร้อยแล้ว’);</script>”)
Else
Me.ClientScript.RegisterClientScriptBlock(GetType(String), “a3”, “<script language=’javascript’>alert(‘ไม่สามารถอัพโหลดได้’);</script>”)
End If
– ใช้จาว่าสคริปเป็นตัว alert บอกผล ซึ่ง ใช้โค๊ดแค่บรรทัดเดียว คือ Me.ClientScript.RegisterClientScriptBlock(GetType(String), “a1”, “<script language=’javascript’>alert(‘คุณเลือกไฟล์ไม่ถูกต้อง !!!’);</script>”)
– ซึ่งจะเช็ค ประเภทของไฟล์ที่อัพโหลดให้อัพโหลดได้แต่ไฟล์นามสกุล .jpg และ .gif
– เช็คขนาดของภาพไม่เกิน 128 เค
– อัพโหลดรูปเก็บไว้ที่พาธ
** ต้องอ้างจากพาธที่แท้จริง จากตัวอย่างโค๊ดนี้ ไฟล์ที่เรากำลังเขียนอยู่นี้จะอยู่ในโฟล์เดอร์ employee แต่ต้องอ้างพาธ ไว้ที่ \images\employeePIC\emp_
เพราะไฟล์ web เรา( ชื่อว่า myweb ) อยู่ใน C:\Inetpub\wwwroot\myweb\images\employeePIC
โค๊ดนี้ได้จากหนังสือ คู่มือ ASP.NET 2.0 ฉบับสมบูรณ์ โดย ศุภชัีย สมพานิช
..เหมาะสำหรับมือใหม่มาก..
บันทึก asp.net :: เพิ่ม Java script ขณะ runtime (รับค่ามาจาก code behide แล้ว alert)
Posted พฤศจิกายน 22, 2008
on:1. จาว่าสคริปแบบธรรมดาเขียนใน code behide รับค่ามาใส่ใน popup เราได้ด้วย
Partial Class employee_ss
Inherits System.Web.UI.PageProtected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim X As String = “Alert Fayjaa !!!!”Me.ClientScript.RegisterClientScriptBlock(GetType(String), “ABC”, “<script language=’javascript’>alert(‘” & X & “‘);</script>”)
End Sub
End Classตรง ABC คือ keyname เอาไว้แบ่งแยกสคริป
2. จาว่าสคริปใน asp.net เปิดหน้าใหม่ กำหนดขนาดได้ แต่ทำไมรีเฟรชหน้าเดิม ??
<a href=”JAVASCRIPT:window.open(
‘EmpChild.aspx’, ‘name’ , ‘menubar=yes , location=yes , scrollbar=yes , status=yes ,
resizable=yes ,width=500 , height=500’);” target=”_top”>อัพโหลดรูป</a>หรือ
<a href=”#” onclick=”javascript:window.open(‘EmpUploadPic.aspx’, ‘_blank’,’top=100, left=100, height=740, width=780, status=no, menubar=no, resizable=no, scrollbars=yes, toolbar=no, location=no, directories=no’);”>
คลิก
</a>
กำหนดเมื่อ page load ให้ dropdownlist เป็น “โสด” แล้วกำหนด คอนโทรลตัวอื่นที่ไม่เกี่ยวข้องให้ใช้งานไม่ได้
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MarryNotShow()
‘control วันที่
If Page.IsPostBack Then
Response.Write(“เกิดวันที่ ” & dateUC1.DVal & “/” & dateUC1.MVal & “/” & dateUC1.YVal)
‘ control radio button เพศ
If radiMale.Checked = True Then
Response.Write(radiMale.Text)
Else
Response.Write(radiFemale.Text)
End If
End If
End Sub
และเมื่อมีเปลี่ยนค่า ใน dropdownlist จาก “โสด” เป็น “สมรส” control ถึงจะสามารถใช้งานได้
Protected Sub ddlMarry_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlMarry.SelectedIndexChanged
‘check marry
If ddlMarry.SelectedValue = “สมรส” Then
MarryShow()
ElseIf ddlMarry.SelectedValue = “โสด” Then
MarryNotShow()
End If
End Sub
โดยเขียน private sub สองตัว
Private Sub MarryNotShow()
radiYes.Checked = False
radiNo.Checked = False
txtNameMate.Text = “”
txtJobMade.Text = “”
txtJobOfficeMade.Text = “”txtNameMate.CssClass = “textboxEnable”
txtJobMade.CssClass = “textboxEnable”
txtJobOfficeMade.CssClass = “textboxEnable”
ddlMarryRegis.Enabled = False
radiYes.Enabled = False
radiNo.Enabled = False
txtNameMate.Enabled = False
txtJobMade.Enabled = False
txtJobOfficeMade.Enabled = False
End Sub
Private Sub MarryShow()
txtNameMate.CssClass = “”
txtJobMade.CssClass = “”
txtJobOfficeMade.CssClass = “”ddlMarryRegis.Enabled = True
radiYes.Enabled = True
radiNo.Enabled = True
txtNameMate.Enabled = True
txtJobMade.Enabled = True
txtJobOfficeMade.Enabled = True
End Sub
เพิ่งนึกได้ ว่าตอนทำ vb6 สมัยเมินนานมาแล้ว ก็ทำแบบนี้นี่นา
ข้อเสียก็คือ ตอนเลือก สถานภาพสมรส มันจะส่งค่า ispostback ซึ่งจะทำให้หน้าเพจ refresh
(อาจจะทำให้ผู้ใช้รำคาญได้)
ไม่รู้ว่ามีวิธีอื่นที่ดีกว่านี้รึเปล่า..
บันทึก 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 มันคืออะไรคะ.. ???
ความเห็นล่าสุด