none
DataGridView_Click事件與其對應之欄位 RRS feed

  • 問題

  • 各位大大好:
    小弟今天有2個問題!!是有關於DataGridView與其欄位問題

    問題1:
    我在DataGridView的Click事件上寫下點一下就出現一個Frm,
    不過我每點一下DataGridView就會再出現一次這個Frm,可不可以知讓它出現一次就好
    程式如下
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

    {

     Form2 Form2 = new Form2();  

    Form2.textBox2.Text = textBox3.Text;//此行接問題2,textBox3.Text在Form上

    Form2.Show();  

    }

    問題2:
    我的Form2上有 maskedTextBox1.Text 與textBox1,當我SHOW出Form2的時候,
    我在maskedTextBox1.Text 與textBox1上寫入文字,
    我希望將値寫入我在dataGridView1上所點的那行資料(DB已設好欄位)
    程式如下:

    private void button1_Click(object sender, EventArgs e)

    {

    //Form2的button  

    String str = "Data source=MIS_3;Initial catalog=ElateDB;Integrated Security=True";

    SqlConnection Conn = new SqlConnection(str);

    Conn.Open();

    String SQL = "Update JGP Set BillNO = '" + maskedTextBox1.Text + "',Billman = '" + textBox1.Text + "' where Tel = '" + textBox2.Text + "' ";

    SqlCommand cmd = new SqlCommand(SQL, Conn);

    cmd.ExecuteNonQuery();  

    }

    由於我用textBox3.Text來判定Form2的値該寫入哪個資料行,textBox3.Text為Form1的查詢條件-[電話TEL]
    但是這樣當dataGridView1的Tel欄位出現2筆以上的相同電話,是不是會遇到不知道將値寫入哪個資料行??
    我的期望是可以用滑鼠點dataGridView1上的資料行,Form2的資料就可以寫入所點的資料行位置??

    使用工具:VS2005
    DB:MSSQL2005
    WinFrm(C#)

    資料欄位:NAME、TEL、ORG、BillNO、Billman

    2007年3月26日 上午 08:12

所有回覆

  • Hi,以下幾點您做參考

    Q1.

       1.可以用ShowDialog的方式使Form2成為一個強制回應的對話框,一定要操作完才可以跳回Form1

       2.可以用Panel之類的容器,當點了DataGridView之後用移動panel的方式來做相關處理

    Q2.

       1.Update的時候應該要有唯一值當索引,不然照你的方式,所有電話一樣的人都會被你一起update掉

       2.另外如果說搭配bindingSource去做的話,可以去取得bindingSource.current,他會是目前指到的這一筆紀錄,去變動相對應的欄位,之後利用adapter把變動的資料一起update回去就可以了,不過要考慮是不是會有並行處理違規相關方面的問題就是了。

     

    2007年3月26日 上午 08:54