|
|
|
รบกวนถามเรื่อง การดึงค่าจาก DataGridView มาโชวใน TextBox เมื่อ คลิกที่แถวใดๆขณะที่รันโปรแกรมอยู่ครับ |
|
|
|
|
|
|
|
รบกวนด้วยนะครับ ผมเพิ่งหัดเขียนโปรแกรมน่ะครับ
คือติดปัญหาจาก การดึงค่าจาก dataGridView มาโชวใน textBox เมื่อ คลิกที่แถวใดๆใน dataGridView
ขณะที่รันโปรแกรมอยู่ครับ
ภาษา c# น่ะครับ
dataGridView ผมเชื่อมกับ Database Mysql น่ะครับ
ในรูปผมอยากให้เมื่อคลิกที่แถวใดๆ แล้วรหัสผู้ยืมจะไปโชวใน textBox ครับ
เอาโค้ดมาให้ช่วยดูนะครับ อันนี้ผมทำใน Form5 ซึ่งจะเรียกไปใส่ใน panel ในฟอร์ม 1 อีกครั้ง ตามรูปครับ
อันนี้โค้ตของ Form5 ครับ จะต้องเติมอันไหนบ้างครับ
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
namespace Test1
{
public partial class Form5 : Form
{
bool Membercheck = false;
public Form5()
{
InitializeComponent();
}
private void Showdata1()
{
string MyConString = "SERVER=localhost;" +
"DATABASE=test;" +
"UID=root;" +
"PASSWORD=1234;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
if (Membercheck == false)
command.CommandText = "SELECT member.ID_Member,member.FNAme,member.LName,book.ID_Book,book.Name,rental.Start_Rent,rental.End_Rent FROM rental,member,book WHERE rental.ID_Member = member.ID_Member AND rental.ID_Book = book.ID_Book AND rental.Re_Rent = ''";
if (Membercheck == true)
command.CommandText = "SELECT member.ID_Member,member.FNAme,member.LName,book.ID_Book,book.Name,rental.Start_Rent,rental.End_Rent FROM rental,member,book WHERE rental.ID_Member = member.ID_Member AND rental.ID_Book = book.ID_Book AND rental.Re_Rent = '' AND rental.ID_Member = '" + textBox1.Text + "'";
connection.Open();
Reader = command.ExecuteReader();
DataTable member_table = new DataTable();
member_table.Load(Reader);
connection.Close();
dataGridView1.DataSource = member_table;
dataGridView1.Columns[0].HeaderText = "รหัสสมาชิก";
dataGridView1.Columns[1].HeaderText = "ชื่อผู้ยืม";
dataGridView1.Columns[2].HeaderText = "นามสกุล";
dataGridView1.Columns[3].HeaderText = "รหัสหนังสือ";
dataGridView1.Columns[4].HeaderText = "ชื่อหนังสือที่ยืม";
dataGridView1.Columns[5].HeaderText = "วันที่ยืม";
dataGridView1.Columns[6].HeaderText = "กำหนดคืน";
}
private void Form5_Load(object sender, EventArgs e)
{
Membercheck = false;
Showdata1();
}
private void button2_Click(object sender, EventArgs e)
{
Membercheck = true;
Showdata1();
button2.Enabled = false;
textBox1.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
Membercheck = false;
Showdata1();
button2.Enabled = true;
textBox1.Clear();
textBox1.Enabled = true;
}
}
}
Tag : .NET, MySQL, C#
|
ประวัติการแก้ไข 2012-09-22 02:41:37 2012-09-22 15:53:56
|
|
|
|
|
Date :
2012-09-21 23:24:17 |
By :
kangsak |
View :
4603 |
Reply :
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
TextBox1.Text = DataGridView1.Rows(e.RowIndex).Cells(0).ToString;
กระทู้เก่าๆ มันมีอยู่ครับลองๆค้นดู
|
|
|
|
|
Date :
2012-09-22 00:26:54 |
By :
Downrung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณนะครับ ผมมืดแปดด้านเลยครับ ลองดูในโปรเจครุ่นพี่ ดูไนเนต รวมถึงใน ThaiCreate.Com ด้วย
มีเข้าประเด็นเยอะ แต่เอาไปลองแล้วไปไกลเลยครับ ช่วยผมด้วยนะครับ
|
|
|
|
|
Date :
2012-09-22 01:29:47 |
By :
kangsak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับ
|
|
|
|
|
Date :
2012-09-22 01:34:50 |
By :
Downrung |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
วันนีี้ขอยอมแพ้ก่อนครับ ตั้งแต่เย็นแล้วก็ยังไม่สำเร็จ T^T
|
|
|
|
|
Date :
2012-09-22 03:33:58 |
By :
kangsak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไหนลองเอาโค้ด ที่เราเขียนมาลงดิ จะช่วยเติมให้
|
|
|
|
|
Date :
2012-09-22 10:28:38 |
By :
SeedNew |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมแก้ไขโพสแล้วนะครับ เอาโค้ตกับรูปมาไห้ดูไหม่ เดี๋ยวจะลองไปตามลิงค์ของคุณ ช้อปเปอร์ก่อนครับ ขอบคุณมากๆครับ
|
|
|
|
|
Date :
2012-09-22 15:55:43 |
By :
kangsak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ลักไก่เอาแบบนี้เลย แต่ยังติดปัญหาว่า มันต้องคลิกให้โดนตัวอักษรเท่านั้นจะเป็นตัวอักษรของคอลัมไหนก้ได้
และถ้่าไปกดที่ Colum Header เพื่อให้เรียงตาม ลอลัมภ์นั้น ก็เท่ากับ มันจะมั่วทันทีครับ จะแก้หรือเพิ่มเติมอะไรดีครับ
Code (C#)
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
string MyConString = "SERVER=localhost;" +
"DATABASE=test;" +
"UID=root;" +
"PASSWORD=1234;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "select rental.ID_Member from rental ";
connection.Open();
Reader = command.ExecuteReader();
string Index = dataGridView1.CurrentRow.Index.ToString();
int Number = -1;
while (Reader.Read())
{
Number += 1;
if (Index == Convert.ToString(Number))
{
textBox8.Text = Reader["ID_Member"].ToString();
}
}
}
|
|
|
|
|
Date :
2012-09-22 21:43:36 |
By :
kangsak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะโยนไปใส่ฟอร์มไหนเหรอ ผมดูโค้ดคุณมันซับซ้อนนิดหนึ่ง แล้วฟอร์มที่โยนใส่ ขอดูโค้ดไหม
|
|
|
|
|
Date :
2012-09-24 09:47:22 |
By :
SeedNew |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มองไม่ค่อยเห็นภาพ แต่เขียนแบบโญนข้ามฟอร์มให้แล้วกัน
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;
namespace Test1
{
public partial class Form5 : Form
{
bool Membercheck = false;
public Form5()
{
InitializeComponent();
}
public string _ID_Member { get; set; }
public string _FNAme { get; set; }
public string _LName { get; set; }
public string _ID_Book { get; set; }
public string _Name { get; set; }
public string _Start_Rent { get; set; }
public string _End_Rent { get; set; }
private void Showdata1()
{
string MyConString = "SERVER=localhost;" +
"DATABASE=test;" +
"UID=root;" +
"PASSWORD=1234;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = " SELECT M.ID_Member,M.FNAme,M.LName,B.ID_Book,B.Name,R.Start_Rent,R.End_Rent ";
command.CommandText += " FROM rental AS R INNER JOIN member AS M ON R.ID_Member = M.ID_Member ";
command.CommandText += " INNER JOIN book AS B ON R.ID_Book = B.ID_Book ";
if (Membercheck == false)
{
command.CommandText += " WHERE R.Re_Rent = '' ";
}
if (Membercheck == true)
{
command.CommandText += " WHERE R.ID_Member = '" + textBox1.Text + "'";
} connection.Open();
Reader = command.ExecuteReader();
DataTable member_table = new DataTable();
member_table.Load(Reader);
connection.Close();
dataGridView1.DataSource = member_table;
dataGridView1.Columns[0].HeaderText = "รหัสสมาชิก";
dataGridView1.Columns[1].HeaderText = "ชื่อผู้ยืม";
dataGridView1.Columns[2].HeaderText = "นามสกุล";
dataGridView1.Columns[3].HeaderText = "รหัสหนังสือ";
dataGridView1.Columns[4].HeaderText = "ชื่อหนังสือที่ยืม";
dataGridView1.Columns[5].HeaderText = "วันที่ยืม";
dataGridView1.Columns[6].HeaderText = "กำหนดคืน";
}
private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex == -1)
{
return;
}
_ID_Member = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
_FNAme = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
_LName = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
_ID_Book = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
_Name = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
_Start_Rent = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString();
_End_Rent = dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString();
this.Close();
}
private void Form5_Load(object sender, EventArgs e)
{
Membercheck = false;
Showdata1();
}
private void button1_Click(object sender, EventArgs e)
{
Membercheck = false;
Showdata1();
button2.Enabled = true;
textBox1.Clear();
textBox1.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
Membercheck = true;
Showdata1();
button2.Enabled = false;
textBox1.Enabled = false;
}
}
}
ส่วนค่าที่จะเอาไปใช้ก็เขียนในฟอร์มนั้นว่า
สมมุติ
textBox1.text = From5._ID_Member ;
ถ้า งง ถามได้
|
|
|
|
|
Date :
2012-09-24 10:25:26 |
By :
SeedNew |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็นอย่างที่ นายบอกนะครับ แต่ว่าแต่ได้คำตอบหรือยัง ถ้ายังไม่ได้ลองแบบนี้ดู
Code (C#)
private void _DGV_Dis_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
// กำหนดค่า Index ให้กับชื่อของตาราง Datagrid = rowClickDis
int rowClickDis = _DGV_Dis.CurrentRow.Index;
// กำหนดว่าแต่ละคอลัมน์ของแถวตั้งอยู่ที่ Cell หรือ คอลัมน์ที่อ้างถึง ชื่อ Textbox ที่จะส่งค่าไป
dtp_DocDate.Text = _DGV_Dis.Rows[rowClickDis].Cells[0].Value.ToString(); //ตรงนี้เป็นการเอาในดาต้ากริดไปใส่textbox ถ้าเกิดตรง Cell[Index] ตามช่องจะข้ามและเกินไม่ได้นะครับ
dtp_DocDate.Text = _DGV_Dis.Rows[rowClickDis].Cells[1].Value.ToString();
}
|
|
|
|
|
Date :
2012-09-25 14:55:01 |
By :
Littlefatboyz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณทุกท่านมากครับ ขอบคุณมากจริงๆ
|
|
|
|
|
Date :
2012-09-27 00:00:09 |
By :
kangsak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|