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 > CheckBox ติ๊กเลือก หลายช่อง แต่เมื่อกดลบ ลบได้แค่ช่องเดียว ช่วยหน่อยนะ มีโค๊ดครับ



 

CheckBox ติ๊กเลือก หลายช่อง แต่เมื่อกดลบ ลบได้แค่ช่องเดียว ช่วยหน่อยนะ มีโค๊ดครับ

 



Topic : 074544

Guest




ช่วยดูโค๊ดให้หน่อยนะครับ เป็น WinAPP
เวลาติ๊กเลือก Chexkbox ข้อมูลใน DataGrid ที่จะลบ ....เมื่อติ๊ก 1ช่องจะลบได้ปกติ

แต่...เมื่อติ๊ก1ช่องขึ้นไป มันจะลบ ตัวที่เราติ๊ก ที่อยู่แถวล่างสุดใน DataGrid เพียงแถวเดียว อ่ะครับ

ผมต้องการให้มันลบตามที่ผมเลือกติ๊กนะครับ

ผมค้นหาดูจากหนังสือ จากเว็บนี้ จากกูเกิ้ล มา2-3วันแล้วก็ยังทำไม่ได้เลยครับ
ช่วยแนะนำ แก้ไขให้ผมหน่อยครับ มึนตึ๊บเลยครับ :(

ขอบคุณครับพี่ๆ

Code (C#)
private void btnDel_Click(object sender, EventArgs e)
        {
            string sql;
            sql = sb.ToString();

                        for (int i = dgvList.Rows.Count-1; i >=  0; i--)
            {
                if (dgvList.Rows[i].Cells[0].Value != null)
                {
                    String id=dgvList.Rows [i].Cells [1].Value .ToString ();
                    sql="DELETE FROM product where pro_id='"+id+"'";
                    dgvList.Rows.RemoveAt(i);
                    Com.Connection = Conn;
                    Com.CommandType = CommandType.Text;
                    Com.CommandText = sql;
                    Com.ExecuteNonQuery();
                    Com.Transaction = tr;
                    Com.Parameters.Clear();
                    try
                    {
                        Com.ExecuteNonQuery();
                        MessageBox.Show("ลบข้อมูล เรียบร้อยแล้ว", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    }
                    catch
                    {
                        MessageBox.Show("ลบข้อมูล ไม่ได้", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        
                    }


                    ClearAllData();
                    ShowData();
                    FormatDgvCustomerList();
                }
            }

private void ShowData()
        {
            string sql = "SELECT product.pro_id,product.pro_name,brand.brand_name FROM product,brand WHERE (product.brand_name=brand.brand_id) ORDER BY pro_id";

            OleDbDataReader dr;
            DataTable dt;
            Com = new OleDbCommand();
            Com.CommandType = CommandType.Text;
            Com.CommandText = sql;
            Com.Connection = Conn;
            dr = Com.ExecuteReader();
            if (dr.HasRows)
            {
                dt = new DataTable();
                dt.Load(dr);
                dgvList.DataSource = dt;
            }
            else
            {
                dgvList.DataSource = null;
            }
            dr.Close();

        }

private void FormatDgvCustomerList()
        {
            if (dgvList.RowCount > 0)
            {
                dgvList.Columns[1].HeaderText = "รหัส";
                dgvList.Columns[2].HeaderText = "ชื่อ";
                dgvList.Columns[3].HeaderText = "ยี่ห้อ";
                dgvList.Columns[1].Width = 60;
                dgvList.Columns[2].Width = 100;
                dgvList.Columns[3].Width = 100;
            }




Tag : .NET, C#, VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-02-25 18:24:20 By : Smile View : 1783 Reply : 20
 

 

No. 1

Guest


ลืมบอกไปผมใช่โค๊ด Chexkbox ไว้ใน ฟอร์มโหลดนะครับ

Code (C#)
DataGridViewCheckBoxColumn CheckCol = new DataGridViewCheckBoxColumn();
            dgvList.Columns.Insert(0, CheckCol);
            dgvList.Columns[0].HeaderText = "เลือก";
            dgvList.Columns[0].Width = 40;







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-25 18:27:05 By : Smile
 


 

No. 2

Guest


เครื่องหมายใน ลูป for อ่ะ ครับ เงื่อนไข ผิด i ต้อง น้อยกว่าหรือ เท่ากับ 0

ปล. นายเริ่มที่แถวสุดท้าย แล้วมัน เงื่อนไขนาย วนจนมากกว่า 0 คือ วนรอบเดียวมันก็ มากกว่า 0 แล้วครับ มันก็เลย ออก ลูป จึงทำให้ลบได้ แต่ ตัว แถวสุดท้าย ^^


for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
//ดูง่ายดีครับ
}
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-25 19:14:45 By : mr.new
 

 

No. 3

Guest


ขอบคุณ mr.new มากครับ

ผมไม่ค่อยถนัดเรื่องคำนวนเท่าไหร่
เพิ่งหัด เขียนโค๊ดนะครับ ขอบคุณมากครับ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-25 20:12:00 By : Smile
 


 

No. 4

Guest


แต่ยังไม่ได้ครับ มันจะลบเป็นแถว เลขคี่อ่ะครับเช่นมี 8 แถสมันจะลบแถว 1 3 5 7 อ่ะครับ
โดยขนาดไม่ติ๊กCheckbox แค่กดปุ่มลบมันก้จะลบเลยครับ

ช่วยหน่อยครับจะส่งงานวันจันทร์แล้วครับ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-25 20:31:27 By : Smile
 


 

No. 5



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



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


Code (C#)
   for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if ((bool)dataGridView1.Rows[i].Cells[0].FormattedValue==true)
                {
                    //  ลบตัวที่ check
                }
            }


ปล.เงื่อนไข != null มันมีปัญหา ตอนเช็ค อีกทีครับใช้ไม่ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-25 21:47:54 By : Akio<--- mr.new
 


 

No. 6

Guest


มันก้ยังลบแถวบนสุดที่เลือกครับ 1 แถว ผมงงมาเลยครับ
Checkbox ผมใช้โค๊ดสร้างนะครับไม่ได้ใช้ตัวช่วยของdatagrid อ่ะคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-25 22:15:52 By : Smile
 


 

No. 7



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



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


งั้นต้องลองเช็ค ก่อนครับ ว่า มีค่าที่เราเลือกจริงไหม ใน เงื่อนไข if ลอง ใส่ messagebox.show("ค่า pk ที่เราจะ ลบ"); ค่าที่เราเลือกมาดูก่อนครับ ว่า มันออกมา จริงไหมตามเงื่อนไขหรือปล่าวอ่ะ

ผมก็ไม่เคยใช้ datasource เลยครับ จับ dataset มาใส่ datagridview ทีละ row เอาอ่ะครับ เลยไม่รู้ว่า มันเกี่ยวกับตัวนั้นหรือปล่าว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-25 23:55:16 By : Akio
 


 

No. 8

Guest


ผมก็งมมา2-3วันละครับ

แต่ลองพิมโค๊ดลบเช็คบ๊อกแบบไม่ติดต่อฐานข้อมูลนี้ไป ใช้ได้นะครับ
แต่...มันจะลบแต่ในดาต้ากริดนะครับ ส่วนในฐานข้อมูลมันไม่ลบให้

for (int i = dataGridView1.Rows.Count -1; i >= 0 ; i--) 
{ 
    if ((bool)dataGridView1.Rows[i].Cells[0].FormattedValue) 
    { 
        dataGridView1.Rows.RemoveAt(i); 
    } 
} 



ผมอยากให้มันลบในฐานข้อมูลด้วยจะต้อง เพิ่มโค๊ดลบยังไงอะครับ

แล้วก็ มันต้องมีโค๊ด ไว้เช็ค เชคบ๊อกหรือป่าวครับ
ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 00:14:29 By : Smile
 


 

No. 9



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



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


ลองใส่ messsbox เช็คค่า id ยังครับ


ประวัติการแก้ไข
2012-02-26 08:05:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 07:55:07 By : Akio
 


 

No. 10

Guest


เช็คยังไงอ่าครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 09:02:48 By : Smile
 


 

No. 11



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



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


Code (C#)
String id=dgvList.Rows [i].Cells [1].Value .ToString ();
                    sql="DELETE FROM product where pro_id='"+id+"'";
                    MessageBox.Show("ค่าเช็ค box ที่ลบ"+id); //<--- มันจะ show  ค่าที่เราเลือกมา (ที่จะลบ) ว่ามี id อะไรบ้าง
                    Com.Connection = Conn;
                    Com.CommandType = CommandType.Text;
                    Com.CommandText = sql;
                    Com.ExecuteNonQuery();
                    Com.Transaction = tr;
                    Com.Parameters.Clear();
                    try
                    {
                        Com.ExecuteNonQuery();
                        MessageBox.Show("ลบข้อมูล เรียบร้อยแล้ว", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information);
                       dgvList.Rows.RemoveAt(i);  // < อันนี้เอามาไว้ที่ หลังจาก มันลบจากฐานข้อมูลได้แล้วดีกว่าครับ

                    }
                    catch
                    {
                        MessageBox.Show("ลบข้อมูล ไม่ได้", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        
                    }


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 09:10:36 By : Akio
 


 

No. 12

Guest


อ่อครับมันจะโชว์ค่าที่เลือกมา

คือผมเลือก pro_id ที่มีค่า 21 มันก็ขึ้นมานะครับ แล้วมันก้ลบได้
แต่พอติ๊กเกิน2ตัวขึ้นไป มันจะโชวเมสเสจว่าลบแถวแรกสุดของตาราง แล้วมันก็ลบแค่ตารางเดียวครับ ...
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 09:20:11 By : Smile
 


 

No. 13



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



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


Code (C#)
for (int i = dataGridView1.Rows.Count -1; i >= 0 ; i--) 
{ 
    if ((bool)dataGridView1.Rows[i].Cells[0].FormattedValue) 
    { 
        dataGridView1.Rows.RemoveAt(i); 
    } 
} 


อธิบาย* สมมุติ มี ข้อมูล 5 แถว ลูป for ตัวนี้ มันจะอ่านค่าจาก แถวสุดท้าย (แถวที่ 5) ครับ ลูปแรกทำเสร็จ มันเหลืออีก 4 แถว มันเลยเข้าเงื่อนไข ที่มันต้องหลุด ออกจาก ลูปมันครับ เพราะ i = 4 ซึ่งมากกว่า 0

*เงื่อนไขครับ มัน ต้อง i <= 0 ลองเปลี่ยนดูนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 09:35:09 By : Akio
 


 

No. 14

Guest


โค๊ดด้านบนผมใช้ทดลองลบแบบไม่ใช้ฐานข้อมูลครับ มันสามารถลบได้

แต่โค๊ดที่ผมโพสด้านบนที่คุณ Aiko แก้ให้มันลบได้ทีละตัวผมไม่ทราบว่าโค๊ดผิดตรงไหนอ่าครับ งงทั้งคืนแล้ว T_T
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 09:53:54 By : Smile
 


 

No. 15



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



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


Code (C#)
private void button1_Click(object sender, EventArgs e) // ปุ่มเรียกข้อมูลลง datagridview
        {
            dataGridView1.Rows.Clear();
            string sql = "select * from u01_pay";
            DataSet ds = new DataSet();
            ds = new DBClass().NpgGet(sql,"u01_pay");
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[i].Cells[1].Value=ds.Tables[0].Rows[i]["pay_id"].ToString().Trim();
                    dataGridView1.Rows[i].Cells[2].Value=ds.Tables[0].Rows[i]["pay_name"].ToString().Trim();
                }
            }
        }

        private void button2_Click(object sender, EventArgs e) // ปุ่มลบ
        {
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if ((bool)dataGridView1.Rows[i].Cells[0].FormattedValue)
                {
                    MessageBox.Show(dataGridView1.Rows[i].Cells[1].Value.ToString() + "," + dataGridView1.Rows[i].Cells[2].Value.ToString());
                    string sql = "delete from u01_pay where pay_id='" + dataGridView1.Rows[i].Cells[1].Value.ToString().Trim() + "'";
                    int x = new DBClass().NpgExecute(sql); 
                    if (x > 0)
                    {//มันลบใน ฐานข้อมูลแล้ว
                        MessageBox.Show("ลบ ID =" + dataGridView1.Rows[i].Cells[1].Value.ToString()+ "เรียบร้อยแล้ว");
                        dataGridView1.Rows.Remove(dataGridView1.Rows[i]);
                    }
                    
                }
            }
        }


อันนี้ ผม ลองทำ กับ Postgres นะครับ ได้ปกติ
ลอง ไล่สเต็ปดูครับ
สู้ๆ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 12:08:08 By : Akio
 


 

No. 16

Guest


อ่ะครับ

ลองดูแล้วครับเวลากดลบมันจะมีเมสเสจบอกขึ้นมาตามแถวที่เลือกแล้วครับ
แต่ผมลองไล่ให้มันไปลบในฐานข้อมูล ยังไม่ได้เลยครับ

ของคุณ Aiko ติดต่อฐานข้อมูลผ่าน คลาส DBClassใช่ป่าวครับ แล้วผมต้องทำยังไงดีครับ งงมือใหม่ด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 12:53:22 By : Smile
 


 

No. 17



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



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


DBclass เป็น ของ พี่ๆ ในเว็บ เอามาโพสนี่แหละ ครับ

นี่ครับ DBclass > https://www.thaicreate.com/dotnet/forum/055716.html
ลอง search ปัญหาดูใน ช่อง "อยากหาอะไรพิมพ์ตรงนี้ได้เลยจ้า... ^-^ "
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 13:08:47 By : Akio
 


 

No. 18

Guest


ผมลองแล้วมันยังลบเปน็เลขคี่อยู่อ่ะครับ - -
ยังไงขอไฟล์ที่ท่าน ทดสอบทำมาให้ผมดูหน่อยได้ไหมครับ ^^
เพราะผมไม่แน่ใจว่ามนหอรมผมจะมีอะไรที่ทำให้มีปันหาไมหอ่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 15:30:40 By : Smile
 


 

No. 19

Guest


ประมาณว่าติ๊กเลือกช่องไหนมันจะลบแถวที่เลือก แล้วมันจะข้ามแถวไป1แถวอะครับแล้วลบอีก
ดังรูปครับ

aaaa
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 15:42:30 By : Smile
 


 

No. 20

Guest


ได้ละครับ ขอบคุณท่าน Aiko มากนะครับ

ปล.แก้คำสั่งให้มันลบจากแถวล่างขึ้นบนอ่ะถึงได้ -_-"
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-02-26 16:37:10 By : Smile
 

   

ค้นหาข้อมูล


   
 

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