ความผิดพลาดคืออาจารย์ 2

Archive for the ‘บันทึกรัก asp.net’ Category

ส่วนใหญ่ทำในโค๊ด 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

css popup แสดงข้�มูลที่ดึงมา

css popup แสดงข้อมูลที่ดึงมา

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>

จบ…

ขอขอบคุณ
http://www.emanueleferonato.com/2007/08/22/create-a-lightbox-effect-only-with-css-no-javascript-needed/

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>

DetailsView �ยู่ใน Gridview

DetailsView อยู่ใน Gridview

ลองทดสอบเอา 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 แล้วตกลงอันใหนดีกว่ากันล่ะ ???

เครียด �ยากเปลี่ยนทรงผม

เครียด อยากเปลี่ยนทรงผม

ช่วงนี้เครียดๆ เลยอยากเปลี่ยนทรงผม เห็นในอินเตอร์เน็ตทรงเก๋กู๊ดกันทั้งนั้น

เลยตัดหน้าตัวเองใส่หัวคนอื่นซะเลย สวยเช้ง

แต่เพื่อนทักว่า แก่…

หมดอารมณ์ที่จะรีทัชต่อ

เซ็งเป็ด (- -“)( -*-) ไปไกลๆ เลยไป๊


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.Text

Dim 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

ในหน้า code behide

ขั้นแรก ต้องใส่

Imports System.IO

แล้วเมื่อเหตุการณ์กดปุ่ม “อัพโหลดรูปภาพ” เขียนโค๊ดดังนี้

Dim CurrentFileName As String
Dim CurrentPath As String

CurrentFileName = 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 If

If FileUpload1.PostedFile.ContentLength > 131072 Then
Me.ClientScript.RegisterClientScriptBlock(GetType(String), “a2”, “<script language=’javascript’>alert(‘ขนาดของไฟล์ใหญ่เกินไป ซึ่งต้องไม่เกิน 128 KB !!!’);</script>”)
Exit Sub
End If

CurrentPath = Request.PhysicalApplicationPath
CurrentPath += “\images\employeePIC\emp_”

If FileUpload1.HasFile Then
CurrentPath += CurrentFileName

FileUpload1.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 box ด้วยจาว่าสคริปใน asp.net

alert box ด้วยจาว่าสคริปใน asp.net

– ใช้จาว่าสคริปเป็นตัว alert บอกผล ซึ่ง ใช้โค๊ดแค่บรรทัดเดียว คือ Me.ClientScript.RegisterClientScriptBlock(GetType(String), “a1”, “<script language=’javascript’>alert(‘คุณเลือกไฟล์ไม่ถูกต้อง !!!’);</script>”)

– ซึ่งจะเช็ค ประเภทของไฟล์ที่อัพโหลดให้อัพโหลดได้แต่ไฟล์นามสกุล .jpg และ .gif

– เช็คขนาดของภาพไม่เกิน 128 เค

– อัพโหลดรูปเก็บไว้ที่พาธ

directory ไฟล์เว็บ

directory ไฟล์เว็บ

** ต้องอ้างจากพาธที่แท้จริง จากตัวอย่างโค๊ดนี้ ไฟล์ที่เรากำลังเขียนอยู่นี้จะอยู่ในโฟล์เดอร์ employee แต่ต้องอ้างพาธ ไว้ที่ \images\employeePIC\emp_

เพราะไฟล์ web เรา( ชื่อว่า myweb ) อยู่ใน C:\Inetpub\wwwroot\myweb\images\employeePIC

โค๊ดนี้ได้จากหนังสือ คู่มือ ASP.NET 2.0 ฉบับสมบูรณ์ โดย ศุภชัีย สมพานิช
..เหมาะสำหรับมือใหม่มาก..


1. จาว่าสคริปแบบธรรมดาเขียนใน code behide รับค่ามาใส่ใน popup เราได้ด้วย

Partial Class employee_ss
Inherits System.Web.UI.Page

Protected 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 เป็น “โสด” แล้วกำหนด คอนโทรลตัวอื่นที่ไม่เกี่ยวข้องให้ใช้งานไม่ได้

enable control

enable control

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 ถึงจะสามารถใช้งานได้

enable control

ให้แสดง 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

(อาจจะทำให้ผู้ใช้รำคาญได้)

ไม่รู้ว่ามีวิธีอื่นที่ดีกว่านี้รึเปล่า..

ป้ายกำกับ: , ,

ทดสอบใน 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 มันคืออะไรคะ.. ???


หมวดหมู่

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 335 other subscribers

brush photoshop

Add new tag asp.net atsme banner Blog ไทยโดเมน.in.th brush brush photoshop brush photoshop7 brush photoshop ตึก และ นก brush photoshop นักธุรกิจ Business Marketing Day chiangmai magazine cmhappy cmhappy.com cmtoday cmtoday cmhappy download brush download brushes photoshop CS4 download brush photoshop download บรัช e-atsme flash banner free domani FTP+PHP FW mail meeting menu photoshop brush download PHP RA Red Alert3 reggae sme tab thnic virus web design wordpress Yetii Yuri การทำ flash banner กินเนื้อสด ข้าวยาก หมากแพง ความฝัน ฆ่าควาย ฆ่าหมู่ จ๊อบ บรรจบ ชมรมเว็บมาสเตอร์ & ทำ web ทำเว็บ บรัช โฟโต้ช็อป ประกันชีวิต ปริญญา ปาย สวนบวกหาด สอบกพ สอบภาค ก หนังฆ่าคนดำ หน้าที่ webmaster หมาใจดำ หวยออก 111 หางดง เชียงใหม่ อ.ไชยยันต์ ไชยพร ออกแบบเว็บ เบื่อ เร้กเก้ เลี้ยงดง เว็บ SME เว็บเชียงใหม่ แจก brush photoshop แต่งภาพ แว่นตาเกาหลี แว่นตาแฟชั่น แว่นแฟชั่น
พฤษภาคม 2024
จ. อ. พ. พฤ. ศ. ส. อา.
 12345
6789101112
13141516171819
20212223242526
2728293031  

Blog Stats

  • 349,760 hits