 |
|
Dropdownlist ใน DetailsView เวลา Edit Mode น่ะครับ |
|
 |
|
|
 |
 |
|
เมื่อตอนเรา กดปุ่ม Edit ต้องการให้มี Dropdownlist(เรียก data มาจาก DB น่ะครับ)ใส่ใน DetailsView น่ะครับ
ต้องทำไงมั้งครับ หรือว่าผมต้องเปลี่ยนไปใช้งาน Controls ตัวอื่น ช่วยแนะนำหน่อย ครับ ทำโปรเจ็คครับผม ยังไม่เสร็จเลย Help Me Please!
ผมลองทำอย่างนี้ดูแล้วเกิดปัญหา น่ะครับ
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MultiView1.ActiveViewIndex = RadioButtonList1.SelectedIndex 'เลือกไปยังหน้า View2
src.Bind_Search_person(GridView1)
End Sub
Sub rowEdit(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
strID = GridView1.DataKeys(e.NewEditIndex).Value.ToString
detailsviewBind()
End Sub
Protected Sub GridView1_SelectedIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSelectEventArgs) Handles GridView1.SelectedIndexChanging
strID = GridView1.DataKeys(e.NewSelectedIndex).Value.ToString
detailsviewBind()
End Sub
Private Sub detailsviewBind()
' BindData to detailsview
mysql = "SELECT * FROM person_table WHERE id_person='" & strID & "'"
conn.Connect()
Dim cmd As New Mysql.Data.MySqlClient.MySqlCommand(mysql, conn.myConnection)
conn.MyReader = cmd.ExecuteReader
DetailsView1.DataSource = conn.MyReader
DetailsView1.DataBind()
conn.MyReader.Close()
End Sub
Protected Sub RadioButtonList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButtonList1.SelectedIndexChanged
' Check Author ว่าสามารถ เข้าไปสร้าง Account หรือไม่
Dim roles = CType(Session("roles"), String)
If roles = "Administrator" Then
MultiView1.ActiveViewIndex = RadioButtonList1.SelectedValue
Else
MsgBox("ไม่สามารถใช้งานในส่วนนี้ได้ เฉพาะผู้ดูแลระบบ(Administrator)", MsgBoxStyle.OkOnly, "แจ้งเตือน")
Response.Redirect("personel.aspx")
End If
End Sub
Protected Sub DetailsView1_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewModeEventArgs) Handles DetailsView1.ModeChanging
' definite Mode Change of detailsview
Select Case e.NewMode
Case DetailsViewMode.Edit
Dim lblID As Label = CType(DetailsView1.FindControl("lblID"), Label)
strID = lblID.Text
DetailsView1.ChangeMode(DetailsViewMode.Edit)
detailsviewBind()
Case DetailsViewMode.ReadOnly
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly)
End Select
detailsviewBind()
End Sub
Protected Sub DetailsView1_ItemUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewUpdateEventArgs) Handles DetailsView1.ItemUpdating
Dim lblID As Label = CType(DetailsView1.FindControl("lblID"), Label)
strID = lblID.Text
Dim txtEditName As TextBox = CType(DetailsView1.FindControl("txtEditName"), TextBox)
Dim txtBirthDate As TextBox = CType(DetailsView1.FindControl("txtBirthDate"), TextBox)
Dim txtAddress As TextBox = CType(DetailsView1.FindControl("txtAddress"), TextBox)
Dim txtTel As TextBox = CType(DetailsView1.FindControl("txtTel"), TextBox)
Dim txtEmail As TextBox = CType(DetailsView1.FindControl("txtEmail"), TextBox)
Dim txtPosition As TextBox = CType(DetailsView1.FindControl("txtPosition"), TextBox)
Dim txtLocation As TextBox = CType(DetailsView1.FindControl("txtLocation"), TextBox)
conn.Connect()
mysql = "UPDATE person_table SET name='" & txtEditName.Text & "',birthdate='" & txtBirthDate.Text & "',address='" & txtAddress.Text & "',"
mysql &= "phonenumber='" & txtTel.Text & "',email='" & txtEmail.Text & "',position='" & txtPosition.Text & "',location='" & txtLocation.Text & "' WHERE id_person='" & strID & "'"
Dim cmd As New Mysql.Data.MySqlClient.MySqlCommand(mysql, conn.myConnection)
cmd.CommandType = Data.CommandType.Text
cmd.CommandText = mysql
cmd.ExecuteNonQuery()
MsgBox(" แก้ไขข้อมูล เรียบร้อย ", MsgBoxStyle.Information, " Confirm !!")
detailsviewBind()
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly)
End Sub
Tag : - - - -
|
|
 |
 |
 |
 |
Date :
2009-03-17 12:29:24 |
By :
xman2548 |
View :
2991 |
Reply :
2 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่จิงแล้วไม่ต้องเปลี่ยน Control นะคับ ความแตกต่างระหว่าง DetailView กับ FormView คือ
DetailView จะกำหนดโครงสร้างในการแสดงข้อมูลแบบ Single Record ตายตัวแล้ว คือ เป็นตารางขนาด 2 Column (จำนวน Row ขึ้นอยู่กับการ Config Field) ฝั่งซ้ายเป็น Header,ฝั่งขวาเป็น Detail หรือ Data ที่ได้จาก Column นั้น
[Header 1] | [Data 1]
[Header 2] | [Data 2]
[Header 3] | [Data 3]
[Header 4] | [Data 4]
แต่ FormView จะมีความ Flexible มากกว่าคือคุณสามารถจัดโครงของ Data ที่จะแสดง เช่น คุณต้องการแสดง Data แบบ 4 Column
[Header 1] | [Data 1] | [Header 2] | [Data 2]
[Header 3] | [Data 3] | [Header 4] | [Data 4]
[Header 5] | [Data 5] | [Header 6] | [Data 6]
สำหรับวิธีการใส่ ComboBox ใน Detail View ก็คือ ให้ไปที่ Action List (ปุ่มลูกศรมุมขวาของ Control) ของ DetailView > Edit Field
1) จากนั้นจะมี Wizzard ขึ้นมา ด้านช่องด้านซ้ายล่าง ให้เลือก Column แล้ว click Convert to Template (จะอยู่บรรทัดล่างสุด) > Click OK
2) ไปที่ Action List อีกครั้ง เลือก Edit Template สังเกตุที่หัว เลือก Column ให้ตรงกับ Column ที่ Convert Template > แล้วเลือก Edit Template
3) จากนั้นให้ลบ TextBox ที่อยู่ใน Template ออก แล้ว Drag Drop Downlist มาใส่แทน
4) ที่ DropDownList เลือก Config DataSource > กำหนด DataSource ID,Data Text Field,Data Value Field
5) กลับมาที่ Dropdownlist อีกครั้ง เลือก Edit Data Binding ให้เลือก Field ที่จะ Bind กับ Property SelectedValue เพื่อให้เวลาที่ เปิด Mode Edit ของ DetailView ค่าของ Dropdownlist จะได้ Selected ค่าให้
|
 |
 |
 |
 |
Date :
2009-03-24 09:41:10 |
By :
jezusmitsui |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|