台灣最大程式設計社群網站
線上人數
863
 
會員總數:246134
討論主題:189713
歡迎您免費加入會員
討論區列表 >> VB.NET >> TextBox DataBinding 資料連動問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
TextBox DataBinding 資料連動問題
價值 : 200 QP  點閱數:538 回應數:5
樓主

P陳
初級顧問
14911 186
8948 2225
發送站內信

各位好: 這次要請教 TextBox dataBinding 的問題
狀況1:
Form1 上有 Dt1 DGV1 textbox1 textbox2
只要移動 DGV1 的話 TextBox2 TextBox2 的內容會連動

狀況2: Form5 上有 Dt1 DGV1 Button1; Form6 上有 TextBox1 TextBox2
Form5 的 Dgv1 移到第一筆時 按下 Button1 跳到 Form6 Textbox1 TextBox2 出現 AAA BBB
Form5 的 Dgv1 移到第二筆時 按下 Button1 跳到 Form6 此時 Textbox1 TextBox2 還是出現 AAA BBB
【請問該如何才能連動 當Form5 停在第二筆的 DDD EEE 時按下Button1 跳到Form6 應該出現 DDD EEE 而不是第一筆的 AAA BBB】






搜尋相關Tags的文章: [ databinding 連動 ] ,
本篇文章發表於2019-05-31 22:14
1樓
最有價值解答

HB
檢舉此回應
狀況1:依提供之程式測試後,發現可以連動TextBox1及Textbox2文字框。

狀況2:Form6沒有設定DataGridView1.DataSource,調整Form6程式如下供參考

本篇文章回覆於2019-06-01 09:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

P陳
檢舉此回應
HP 您好:

您的作法:要在 Form6 再開一個 datagridview 來控制 Textbox1 textbox2 並不適用我目前碰到的問題解法。
-------------

Form 6 的 Textbox1 textbox2 的資料是從 Form 5的 datagridview 或 Dt1 來的,
因為 Form 5 的 DGV1 可能會有20個欄位,要拉動捲軸才有辦法看全部的資料,使用者希望可以轉成欄位的資料,一次就看到該筆的所有資料。

原先寫法:資料停在 Form5 的第2筆上時,按下 F5 的 Button1 ,要將 第二筆的資料(Datarow databounditem)傳到 Form 6,並將一個個欄位填到 Form6 的控制項上
資料打完後 再將 Form6 的控制上的資料,放回 datarow 再傳回Form5 的 Datagrieview 的第二筆
要寫一推程式來支援,也寫的差不多了。


後來發現可以用 databinding 的方式自動 【繫結】,試了一下好像可以達成。才有這個問題

新的寫法(databinding 作法)
目前無法突破的點
1.datagridview 的 currentrow.databounditem.row -> row1 不能當成 textbox1.databinding 的資料來源 ("Text1",row1 <---

2.Dt1 能當成 textbox1.databinding 的資料來源 ("Text1",Dt1 <--- 但卻一定只帶出第一筆 無法帶出目前Datagridview1 所在 的第二筆

如果這點可以突破時,可以節省很多程式的撰寫難度

本篇文章回覆於2019-06-01 13:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
不錯的參考

roar
檢舉此回應
如你說的一樣,我試databinding也試不出來,不知道原因,為什麼換了一個Form就只找到第一筆記錄。
但如果只是參考Form5的DGV,由此取出row的位置,直接使用textbox.text去設定,也可以取得
以下放在Form6_Load
TextBox1.Text = dt1.Rows.Item(Form5.DataGridView1.CurrentRow.Index).Item("Field1").ToString
TextBox2.Text = dt1.Rows.Item(Form5.DataGridView1.CurrentRow.Index).Item("Field2").ToString
本篇文章回覆於2019-06-01 15:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

HB
檢舉此回應
將Form5的語法修改如下,Form6不須程式碼,看看是否符合所需?

本篇文章回覆於2019-06-01 15:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

P陳
檢舉此回應
HP roar 二位好:
感謝二位的回應,這樣作會將當筆的資料帶過去,但我這 FORM6 是設計成共用的。
一、TextBox1 TextBox2 是在 Form6 Load 時才產生的,無法以 在 Form5 中以 Form6.Textbox1.text=DGV.currentrows.cells(0).cell 的方式來處理
二、這會將所在那筆的資料帶過去沒錯,但無法造成連動,回到Form 5 我還要在處理一次(類似我之前的作法)
-----------------------------------

後來我終於找到解法了
不是丟 Dt1 過去,而是丟 BS1 過去

bs1.datasource=dt1
dgv1=bs1
然後不管 Form 5 停在第幾筆
在Form5 中 form6.I_bs1=bs1 <---將BS1 丟到 Form6

Text1 Text2 則是在 Form6 Load 時產生的 再加 Binding
text1.Binding.add("Text",Bs1,"Field1",.....)
text2.Binding.add("Text",Bs1,"Field1",.....)

在Form6 text1 text2 的修改 回到 Form5 時 DGV1 也一併改過去了,不用再作其他處理了

這樣就資料會過去也會連動了,重點在丟 BS1 過去,而不是丟 DT1 過去。



本篇文章回覆於2019-06-01 19:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.