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,038

HOME > .NET Framework > Forum > งง ครับ แก้มา15วันทำไมไม่ได้ ช่วยด้วยครับ datetimepicker ทำให้binding text ไม่ได้(หลังจากกรองข้อมูล)


 

[.NET] งง ครับ แก้มา15วันทำไมไม่ได้ ช่วยด้วยครับ datetimepicker ทำให้binding text ไม่ได้(หลังจากกรองข้อมูล)

 
Topic : 046259



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



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



โปรแกรมทำงานได้ครับ แต่เวลากดกรองข้อมูล ปรากฏว่า ข้อมูลที่binding กับtextbox ทุกตัวหายหมด (ลองตรวจสอบดูค่าของข้อมูล ใน datatable กรองได้ปรกติครับ) ปัญหาอยู่ที่ datetimepicker ครับเพราะลอง ไม่binding object :Bdatetimepicker1 กรองข้อมูลได้ปรกติครับ...งงมาก...โค๊ดครับ
ใครช่วยแก้ด้วยครับ มือใหม่ครับ
Code (VB.NET)
001.'เชื่อมต่อกับฐานข้อมูล MS_Piyaphum6.mdb ด้วยคลาส OleDbConnection
002.   'ในที่นี้จะเก็บไฟล์ MS_Piyaphum6.mdb ไว้ที่พาธD:\MS_Piyaphum6 Soft\MS_Piyaphum6.mdb ซึ่งสามารถแก้ไขได้ใหม่ตามต้องการ
003.   ' Dim dbConn As OleDbConnection = New OleDbConnection( _
004.   ' "Provider=Microsoft.Jet.OLEDB.4.0; " & _
005.   ' "Data Source=D:\MS_Piyaphum6 Soft\MS_Piyaphum6.mdb")
006.   'เลือกข้อมูลจากเทเบิล Contacts ด้วยคลาส OleDbDataAdapter เพื่อนำมาสร้าง dataset
007.   'Dim dapter As OleDbDataAdapter = New OleDbDataAdapter( _
008.   ' "SELECT * FROM Contacts", dbconn) 'ไม่ใช้ไปสร้างที่formเพราะอยู่นี้ทำงานไม่ได้
009.   'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส OleDbCommandBuilder  
010.   Dim cmdBuilder As OleDbCommandBuilder
011.   'Dim dtSet As DataSet = New DataSet             'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส DataSet   ไม่ใช้ไปสร้างที่formเพราะอยู่นี้ทำงานไม่ได้
012.   Dim dtTable As DataTable                                 'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส DataTable
013.   Dim objCurrencyMgr As CurrencyManager   'ประกาศตัวแปรแทนออบเจ็คหรือ Instance จากคลาส CurrencyManager
014.   Dim currRecPos As Integer                                 'ประกาศตัวแปรเก็บตำแหน่งเรคอร์ดปัจจุบัน
015.   'ประกาศตัวแปรแสดงโหมดการทำงาน ถ้าอยู่ในโหมดเพิ่มเรคอร์ดจะมีค่าเป็น True ถ้าอยู่ในโหมดแก้ไขจะมีค่าเป็น False
016.   Dim addNewMode, editmode, savemode As Boolean
017.   Dim fdName As String                                           'ประกาศตัวแปรเก็บชื่อฟีลด์ในเทเบิล Contacts
018. 
019.   'Event Procedure เมื่อฟอร์มถูกโหลด
020.   Private Sub frmMain_Load(ByVal sender As System.Object, _
021.                                              ByVal e As System.EventArgs) Handles MyBase.Load
022. 
023.       dtAdapter.Fill(dtSet, "contacts")                                     'นำข้อมูลที่เลือกจากเทเบิล Contacts มาไว้ที่ dataset
024.       dtTable = dtSet.Tables("contacts")                              'ให้ตัวแปร dtTable แทนข้อมูลชุดแรกใน dataset ในที่นี้คือข้อมูลจากเทเบิล Contacts    
025.       'สร้างคำสั่ง InsertCommand, UpdateCommand และ DeleteCommand เพื่อใช้จัดการข้อมูลใน dataset
026.       cmdBuilder = New OleDbCommandBuilder(dtAdapter)
027.       EnabledReadWrite()
028.       objCurrencyMgr = CType(Me.BindingContext(dtSet, "contacts"), CurrencyManager) 'ให้ objCurrencyMgr แทนการทำงานร่วมกับ datatable,
029.       txtFName.DataBindings.Add("Text", dtSet, "contacts.Name")
030.       txtLName.DataBindings.Add(New Binding("Text", dtSet, "contacts.Surname"))
031.       txtAddr1.DataBindings.Add(New Binding("Text", dtSet, "contacts.Add1"))
032.       txtAddr2.DataBindings.Add(New Binding("Text", dtSet, "contacts.Add2"))
033.       txtDist.DataBindings.Add(New Binding("Text", dtSet, "contacts.District"))
034.       txtCity.DataBindings.Add(New Binding("Text", dtSet, "contacts.Province"))
035.       txtPosCode.DataBindings.Add(New Binding("Text", dtSet, "contacts.Postcal"))
036.       txtPhone.DataBindings.Add(New Binding("Text", dtSet, "contacts.Tel"))
037.       txtFax.DataBindings.Add(New Binding("Text", dtSet, "contacts.fax"))
038.       txtmobile1.DataBindings.Add(New Binding("Text", dtSet, "contacts.mobile1"))
039.       txtmobile2.DataBindings.Add(New Binding("Text", dtSet, "contacts.mobile2"))
040.       txtoffice_tel.DataBindings.Add(New Binding("Text", dtSet, "contacts.Office_Tel"))
041.       TxtRef.DataBindings.Add(New Binding("Text", dtSet, "contacts.refer"))
042.       txtEmail.DataBindings.Add(New Binding("Text", dtSet, "contacts.email"))
043.       txttittle.DataBindings.Add(New Binding("Text", dtSet, "contacts.Tittle")) '**************
044.       TxtNickname.DataBindings.Add(New Binding("Text", dtSet, "contacts.Nickname"))
045.       SexStatusShow(sender, e)    'เบียนเพิ่มเติมกำลังทดสอบ************
046.       Dim datecolumn As New DataColumn("contacts.Birthdate")
047.       datecolumn.AllowDBNull = True
048.       datecolumn.DataType = GetType(System.DateTime)
049.       BDatePicker1.DataBindings.Add(New Binding("value", dtSet, "contacts.Birthdate")) '****ปัญหาอยู่ที่ตรงนี้ถ้าbinding จะไม่สามารถกรองข้อมูลได้
050.       '(ตอนโหลดฟอร์มจะสามารถbindได้แต่กรองไม่ได้) -ข้อมูลตัวอื่นเพี้ยนด้วย
051.       AdjustPosition(sender, e)                              'แสดงตำแหน่งเรคอร์ดปัจจุบัน (เรคอร์ดที่กำลังแสดงข้อมูลบนฟอร์ม)
052.       'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อตัวชี้ตำแหน่งเรคอร์ดใน datatable เปลี่ยนไป
053.       AddHandler objCurrencyMgr.PositionChanged, AddressOf AdjustPosition
054.       'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Delete
055.       AddHandler btnDelete.Click, AddressOf AdjustPosition
056.       'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Cancel
057.       AddHandler btnCancel.Click, AddressOf AdjustPosition
058.       'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Find 
059.       AddHandler btnFind.Click, AddressOf AdjustPosition
060.       'ให้โปรแกรมย่อย AdjustPosition ทำงาน เมื่อคลิกปุ่ม Filter
061.       AddHandler btnFilter.Click, AddressOf AdjustPosition
062.       DisabledReadWrite()                                     'ให้เท็กซ์บ็อกซ์ทั้งหมดแสดงข้อมูลแบบอ่านได้อย่างเดียว  
063.   End Sub
064.   Private Sub DTformatter(ByVal sender As System.Object, ByVal e As ConvertEventArgs)
065.       Dim b As Binding = CType(sender, Binding)
066.       If Not e.DesiredType Is GetType(DateTime) Then
067.           Return
068.       End If
069.       If e.Value.GetType Is GetType(System.DBNull) Then
070.           e.Value = CType("1/1/1800", System.DateTime)
071.       End If
072.   End Sub
073.   Private Sub DTParser(ByVal sender As System.Object, ByVal e As ConvertEventArgs)
074.       If Not e.DesiredType Is GetType(DateTime) Then
075.           Return
076.       End If
077.       If Not e.Value.GetType Is GetType(DateTime) Then
078.           Return
079.       End If
080.       Dim value As String = CType(e.Value, String)
081.       If value.Equals("1/1/1800") Then
082.           e.Value = System.DBNull.Value
083.       End If
084.   End Sub
085.   Public Sub objclearbind(ByVal sender As System.Object, ByVal e As System.EventArgs)
086.       txtFName.DataBindings.Clear()
087.       txtLName.DataBindings.Clear()
088.       txtAddr1.DataBindings.Clear()
089.       txtAddr2.DataBindings.Clear()
090.       txtDist.DataBindings.Clear()
091.       txtCity.DataBindings.Clear()
092.       txtPosCode.DataBindings.Clear()
093.       txtPhone.DataBindings.Clear()
094.       txtFax.DataBindings.Clear()
095.       txtmobile1.DataBindings.Clear()
096.       txtmobile2.DataBindings.Clear()
097.       txtoffice_tel.DataBindings.Clear()
098.       TxtRef.DataBindings.Clear()
099.       txtEmail.DataBindings.Clear()
100.       txttittle.DataBindings.Clear() '**************
101.       TxtNickname.DataBindings.Clear()
102.       BDatePicker1.DataBindings.Clear()
103.   End Sub
104.  'Event Procedure เมื่อคลิกปุ่มไอคอนกรองข้อมูล
105.   Private Sub btnFilter_Click(ByVal sender As System.Object, _
106.      ByVal e As System.EventArgs) Handles btnFilter.Click
107.       If addNewMode Then
108.           Exit Sub                                                        'ถ้าอยู่ในโหมดการเพิ่มเรคอร์ดให้ออกจาก Procedure นี้
109.       ElseIf txtSearch.Text <> "" Then              'ถ้าอยู่ในโหมดแก้ไขเรคอร์ดและป้อนข้อมูลในช่อง "ค้นหา/กรองข้อมูล"
110.           ' ให้เลือกข้อมูลจากเทเบิล Contactsที่ตรงกับข้อมูลที่ต้องการกรอง********
111.           Dim queryString, txt As String
112.           queryString = "SELECT * FROM Contacts WHERE " & fdName & " LIKE  ?"
113.           Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter
114.           Dim selectCMD As OleDbCommand = New OleDbCommand(queryString, dbconn)
115.           dtAdapter2.SelectCommand = selectCMD
116.           Dim Keyword As String = "%" & Trim(txtSearch.Text) & "%"
117.           Select Case fdName
118.               Case "Name"
119.                   selectCMD.Parameters.Add("@Name", OleDb.OleDbType.VarWChar, 20).Value = Keyword
120.               Case "Surname"
121.                   selectCMD.Parameters.Add("@SurName", OleDb.OleDbType.VarChar, 20).Value = Keyword
122.               Case "District"
123.                   selectCMD.Parameters.Add("@District", OleDb.OleDbType.Char, 10).Value = Keyword
124.               Case "Province"
125.                   selectCMD.Parameters.Add("@Province", OleDb.OleDbType.Char, 20).Value = Keyword
126.               Case "Postcal"
127.                   selectCMD.Parameters.Add("@Postcal", OleDb.OleDbType.Char, 10).Value = Keyword
128.               Case "Tel"
129.                   selectCMD.Parameters.Add(" @Tel", OleDb.OleDbType.Char, 15).Value = Keyword 'ผลเหมือนกับเขียนแบบcaseTel,email
130.               Case "email"
131.                   dtAdapter2.SelectCommand.Parameters.Add(" @Email", OleDb.OleDbType.Char, 25)
132.                   dtAdapter2.SelectCommand.Parameters("@Email").Value = Keyword
133.           End Select
134.           Try
135.               dtSet.Clear()
136.               dtTable.Clear()
137.               dtAdapter2.Fill(dtSet, "contacts")      'นำข้อมูลที่กรองจากเทเบิล Contacts มาไว้ที่ dataset**สำคัญต้องใส่ชือTable contactsด้วยมิฉนัน้จะไม่กรองข้อมูล
138.               dtTable = dtSet.Tables("contacts")                    'ให้ตัวแปร dtTable แทนข้อมูลที่ได้จากการกรอง
139.               objCurrencyMgr = CType(Me.BindingContext(dtSet, "contacts"), CurrencyManager) 'ให้ objCurrencyMgr แทนการทำงานร่วมกับ datatable,
140.               Dim datecolumn As New DataColumn("contacts.Birthdate")
141.               datecolumn.AllowDBNull = True
142.               'ถ้าเป็น datatable ว่าง แสดงข้อความบอกให้ทราบ
143.               If dtTable.Rows.Count = 0 Then MessageBox.Show("ไม่พบข้อมูลที่ต้องการ ! ", "ผลการกรอง", _
144.                                  MessageBoxButtons.OK, MessageBoxIcon.Information)
145.               Dim Bdatebind As New Binding("value", dtSet, "contacts.Birthdate")
146.               AddHandler Bdatebind.Format, AddressOf DTformatter
147.               AddHandler Bdatebind.Parse, AddressOf DTParser
148.               objclearbind(sender, e)
149.               BDatePicker1.DataBindings.Add(Bdatebind)
150.               SexStatusShow(sender, e)
151.               txttittle.DataBindings.Add(New Binding("Text", dtSet, "contacts.Tittle")) '**************
152.           Catch er As Exception
153.               Picture.Image = Nothing
154.               MessageBox.Show(er.Message() & vbCrLf & er.StackTrace)
155.           Finally
156.               Dim c = objCurrencyMgr.Position 'ทดสอบค่าว่า objcurrencymgr ใช้ได้ครับ
157.               MessageBox.Show(txtFName.Text, "Warnning!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'พบว่าtxtfirstname ในformไม่มีค่าที่binding
158.               MessageBox.Show(c, "Warnning!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'ทดสอบค่าว่า objcurrencymgr ใช้ได้ครับ
159.               txt = dtTable.Rows(c).Item("name")
160.               MessageBox.Show(txt, "Warnning!", MessageBoxButtons.OK, MessageBoxIcon.Information) 'ทดสอบค่าว่า ในdataset,datable มีค่า ใช้ได้ครับ
161.               btnSave.Enabled = False
162.               btnAdd.Enabled = False
163.               btnDelete.Enabled = False
164.               btnEdit.Enabled = False
165.               btnCancel.Enabled = False
166.               btnFind.Enabled = False
167.           End Try
168.       End If
169.   End Sub

รูปภาพform ครับ
form main
รูปภาพdata ครับ
data structure



Tag : .NET, Ms Access, Win (Windows App), VB.NET, VS 2003 (.NET 1.1)

Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-07-31 22:27:58 By : rakdi View : 2011 Reply : 1
 

 

No. 1



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



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


ผมก็เกิดปัญหาเหมือนกัน

ของผมแก้อย่างนี้ครับ
แนวทาง

DateTimePicker1.DataBindings.Add("Text", bindingSrc, "DateAdd")

ให้ binding เป็น Text ครับ


ปล.ไม่มีคนตอบมา 8 ปี
ตอบน่าจะคนแรก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-25 19:15:13 By : kicvong
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : งง ครับ แก้มา15วันทำไมไม่ได้ ช่วยด้วยครับ datetimepicker ทำให้binding text ไม่ได้(หลังจากกรองข้อมูล)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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