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

HOME > .NET Framework > Forum > (C#.Net) Windows Application - DataGridView Up or Down Button



 

(C#.Net) Windows Application - DataGridView Up or Down Button

 



Topic : 097830



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



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



จะทำยังไงถึงจะ Binding ข้อมูล(ข้อมูลมาจาก ฐานข้อมูล)

มาแสดงที่ TextBox โดยให้เปลี่ยนข้อมูลตามการกดปุ่มขึ้นหรือลง บนคีย์บอร์ด

จาก DataGridView ครับ



Tag : .NET, MySQL, Win (Windows App), C#, VS 2012 (.NET 4.x), Windows







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-07-15 13:21:06 By : seattlesonic View : 1243 Reply : 10
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

ลองดูตัวนี้ครับ

Code
http://stackoverflow.com/questions/9969061/scroll-to-bottom-of-c-sharp-datagridview
http://stackoverflow.com/questions/16263377/datagridview-scroll-down-automatically-only-if-the-scroll-is-at-the-bottom







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-16 08:52:13 By : mr.win
 


 

No. 2



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



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

Code (C#)
private int pos = 0;

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
            if ((keyData == (Keys.Up)) || (keyData == (Keys.Down)))
            {
                int rowIndex = dg_name.CurrentCell.RowIndex;
                if (keyData == (Keys.Up))
                {
                    upDataGridViewRow();
                    //return true;
                }
                if (keyData == (Keys.Down))
                {
                    downDataGridViewRow();
                    //return true;
                }
            }
            return base.ProcessCmdKey(ref msg, keyData);
}

private void upDataGridViewRow()
{
            try
            {
                pos = dg_name.BindingContext[dtSet, "cus"].Position - 1;

                if (pos < 0)
                    return;
                else
                {
                    dg_name.BindingContext[dtSet, "cus"].Position -= 1;

                    dg_name.Rows[rowIndex].Selected = false;
                    dg_name.Rows[dg_name.BindingContext[dtSet, "cus"].Position].Selected = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
}

private void downDataGridViewRow()
{
            try
            {
                pos = dg_name.BindingContext[dtSet, "cus"].Position + 1;
                int numRows = dtSet.Tables["cus"].Rows.Count;

                if (pos == (numRows))
                    return;
                else
                {
                    dg_name.BindingContext[dtSet, "cus"].Position += 1;

                    dg_name.Rows[rowIndex].Selected = false;
                    dg_name.Rows[dg_name.BindingContext[dtSet, "cus"].Position].Selected = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
}


ทำได้แล้วครับ แต่ว่า...
ถ้าผมไป Events อื่นๆ เช่นกดปุ่ม หรือ คลิกที่ DataGridView เอง
พอกดเลื่อนขึ้นหรือลง ข้อมูลใน TextBox ยังค้างที่เดิมครับ

ตอนเลื่อนขึ้นหรือลง โดยที่ยังไม่ได้ไทำ Events อื่นๆ
ตอนเลื่อนขึ้นหรือลง

หลังจากทำรายการอื่นๆ แล้วกลับมาเลื่อนขึ้นหรือลง ข้อมูลยังค้างที่เดิม
หลังจากทำรายการอื่นๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-16 19:50:06 By : seattlesonic
 

 

No. 3



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



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

หลักการประมาณนี้ครับ

--------Control <==> Binding Source <==> Dataset--------
-----------------------------| |---------------------------------------
-----------------------------| |---------------------------------------
-----------------------------| |---------------------------------------
--------------------Binding Navigator----------------------------

ตัว Binding Source ผูกกับ Dataset โดย ( Property Datasource = Dataset และ Property Datamember = TableName )

และ Control เช่น Textbox กับผูกกับ Binding Source อีกที โดย ( Property DataBinding>Text = Binding Source )

ส่วน Binding Navigator เป็นตัวควบคุม การเลื่อนเรคอร์ดแสดงเรคอร์ดใน Dataset ที่ Binding Source ผูกอยู่
(โดย Property BindingSource = Binding Source)

แค่นี้ไม่ว่าเราจะเลื่อนไปเรคอร์ดไหน Control ที่ผูกกับ Binding Source ก็ตามกันไปครับ


ประวัติการแก้ไข
2013-07-16 20:31:23
2013-07-16 20:32:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-16 20:29:26 By : 01000010
 


 

No. 4



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

จัดไปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-17 06:19:08 By : mr.win
 


 

No. 5



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



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

ตอบความคิดเห็นที่ : 4 เขียนโดย : mr.win เมื่อวันที่ 2013-07-17 06:19:08
รายละเอียดของการตอบ ::
ลุยครับ



ประวัติการแก้ไข
2013-07-17 11:22:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-17 11:21:24 By : seattlesonic
 


 

No. 6



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



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

ตอบความคิดเห็นที่ : 3 เขียนโดย : 01000010 เมื่อวันที่ 2013-07-16 20:29:26
รายละเอียดของการตอบ ::
Example ซักนิดได้ไหมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-17 11:22:47 By : seattlesonic
 


 

No. 7



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



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

ลองเอาไปศึกษาดูนะครับ ประกอบกับคำอธิบายความคิดเห็นที่ 3 ของผม

Code (C#)
            DataTable dt = new DataTable("Test");
            DataColumn dc1 = new DataColumn("TestID");
            DataColumn dc2 = new DataColumn("TestName");

            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);

            DataRow dr = dt.NewRow();
            dr.SetField("TestID", "R1");
            dr.SetField("TestName", "RowsName1");
            dt.Rows.Add(dr);

            DataRow dr1 = dt.NewRow();
            dr1.SetField("TestID", "R2");
            dr1.SetField("TestName", "RowsName2");
            dt.Rows.Add(dr1);

            BindingSource BS = new BindingSource();
            BS.DataSource = dt;

            BindingNavigator BN = new BindingNavigator(BS);
            

            TextBox txtID = new TextBox();
            TextBox txtName = new TextBox();
            txtID.Location = new Point(110, 50);
            txtName.Location = new Point(110, 80);

            this.Controls.Add(BN);
            this.Controls.Add(txtID);
            this.Controls.Add(txtName);

            txtID.DataBindings.Add("Text",BS, "TestID");
            txtName.DataBindings.Add("Text", BS, "TestName");


หมายเหตุ : สร้างฟอร์ม เปล่า ๆ ขึ้นมา แล้ว Copy Code ไปวางไว้ใน Event Form_Load


ประวัติการแก้ไข
2013-07-17 13:40:23
2013-07-17 13:42:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-17 13:39:45 By : 01000010
 


 

No. 8



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



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

อันนี้เป็น Master-Detial นะครับ ลองเอาไปไล่โค้ดดูการทำงาน ถ้าเข้าใจแล้วค่อยลากคอนโทรนจากหน้าจอมาวางในฟอร์มแทนก็จะง่ายขึ้นครับ

Code (C#)
            DataTable dt = new DataTable("Test");
            DataTable dtdt = new DataTable("TestDetial");
            DataColumn dc1 = new DataColumn("TestID");
            DataColumn dc2 = new DataColumn("TestName");

            DataColumn dcdt1 = new DataColumn("DetialID");
            DataColumn dcdt2 = new DataColumn("DetialName");
            DataColumn dcdt3 = new DataColumn("TestID");


            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);

            dtdt.Columns.Add(dcdt1);
            dtdt.Columns.Add(dcdt2);
            dtdt.Columns.Add(dcdt3);

            DataRow dr = dt.NewRow();
            dr.SetField("TestID", "R1");
            dr.SetField("TestName", "RowsName1");
            dt.Rows.Add(dr);

            DataRow dr1 = dt.NewRow();
            dr1.SetField("TestID", "R2");
            dr1.SetField("TestName", "RowsName2");
            dt.Rows.Add(dr1);

            DataRow drdt1 = dtdt.NewRow();
            drdt1.SetField("DetialID", "S1");
            drdt1.SetField("DetialName", "Student1");
            drdt1.SetField("TestID", "R1");
            dtdt.Rows.Add(drdt1);

            DataRow drdt2 = dtdt.NewRow();
            drdt2.SetField("DetialID", "S2");
            drdt2.SetField("DetialName", "Student2");
            drdt2.SetField("TestID", "R1");
            dtdt.Rows.Add(drdt2);

            BindingSource BS = new BindingSource();
            BindingSource BSDetial = new BindingSource();
            BS.DataSource = dt;
          

            DataSet DS = new DataSet();
            DS.Tables.Add(dt);
            DS.Tables.Add(dtdt);


            DataRelation dtr = new DataRelation("TestRelation", DS.Tables["Test"].Columns["TestID"], DS.Tables["TestDetial"].Columns["TestID"],false);
            DS.Relations.Add(dtr);

            BSDetial.DataSource = BS;
            BSDetial.DataMember = "TestRelation";
       

            BindingNavigator BN = new BindingNavigator(BS);
            

            TextBox txtID = new TextBox();
            TextBox txtName = new TextBox();
            txtID.Location = new Point(110, 50);
            txtName.Location = new Point(110, 80);

            DataGridView dgv = new DataGridView();
            dgv.DataSource = BSDetial;
            dgv.Location = new Point(40, 110);

            this.Controls.Add(BN);
            this.Controls.Add(txtID);
            this.Controls.Add(txtName);
            this.Controls.Add(dgv);

            txtID.DataBindings.Add("Text",BS, "TestID");
            txtName.DataBindings.Add("Text", BS, "TestName");




หมายเหตุ : อันนี้เอาไปยัดใส่ Event Form_Load เหมือนความคิดเห็นด้านบนนะครับ


ประวัติการแก้ไข
2013-07-17 15:28:33
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-17 15:28:13 By : 01000010
 


 

No. 9



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



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

ขอขอบคุณเป็นอย่างสูง มา ณ ที่นี้ ด้วยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-17 20:53:50 By : seattlesonic
 


 

No. 10



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



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

ผมสอบถามอีกนิดหน่อยครับ
มีวิธีบล๊อคปุ่ม Tab บนคีย์บอร์ดมั้ยครับ
เพื่อไม่ให้ DataGridView เลื่อนตำแหน่งได้
(เฉพาะ DataGridView นะครับ)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-18 13:16:33 By : seattlesonic
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : (C#.Net) Windows Application - DataGridView Up or Down Button
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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