如何在win格式中处理网格视图按钮中的事件 [英] how can handle event in grid view button in win form

查看:65
本文介绍了如何在win格式中处理网格视图按钮中的事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在这里,在我的win项目中,在数据网格视图(dgv)中有按钮更新主题形式



并点击此按钮添加事件打开一个弹出的胜利来更新主题(内容字段)

这里,问题是当我点击按钮,多个胜利被打开。



还有当我点击btndelete多行被删除



我该如何解决它



我的代码是







here, in my win project ,have button "update Subject" in data grid view (dgv) in form

and add event on clicked at this button open a popup win to update Subject (content Field)
here, problem is when i clicked button, multiple win is opened .

and also when i clicked btndelete multiple row are delete

how can i solve it

my code is



private void Subjectseup()
       {
           gvsubjectsetup.DataSource = null;
           try
           {
               string querystring = "SELECT * FROM dbo.Subjects";
               DataTable datatable = Class1.Datatablebind(querystring);
               if (datatable.Rows.Count > 0)
               {
                   gvsubjectsetup.AutoGenerateColumns = false;

                   //Set Columns Count
                   gvsubjectsetup.ColumnCount = 8;

                   //Add Columns
                   gvsubjectsetup.Columns[0].Name = "Subjectid";
                   gvsubjectsetup.Columns[0].HeaderText = "Subject Id";
                   gvsubjectsetup.Columns[0].DataPropertyName = "Subject_id";

                   gvsubjectsetup.Columns[1].HeaderText = "Subject Name";
                   gvsubjectsetup.Columns[1].Name = "Subject";
                   gvsubjectsetup.Columns[1].DataPropertyName = "Subject Name";

                   gvsubjectsetup.Columns[2].HeaderText = "Allow Class";
                   gvsubjectsetup.Columns[2].Name = "AllowClass";
                   gvsubjectsetup.Columns[2].DataPropertyName = "Allow Class";

                   gvsubjectsetup.Columns[3].Name = "SubjectType";
                   gvsubjectsetup.Columns[3].HeaderText = "Subject Type";
                   gvsubjectsetup.Columns[3].DataPropertyName = "Subject Type";

                   gvsubjectsetup.Columns[4].HeaderText = "Subject Valuation";
                   gvsubjectsetup.Columns[4].DataPropertyName = "Subject valuation";

                   gvsubjectsetup.Columns[5].HeaderText = "Create Date";
                   gvsubjectsetup.Columns[5].DataPropertyName = "Create date";

                   gvsubjectsetup.Columns[6].HeaderText = "Category";
                   gvsubjectsetup.Columns[6].DataPropertyName = "category";

                   // add a button column.
                   DataGridViewButtonColumn updatebutton = new DataGridViewButtonColumn();

                   DataGridViewButtonColumn deletbutton = new DataGridViewButtonColumn();

                   updatebutton.HeaderText = "Update Classes";
                   updatebutton.Text = "Update";
                   updatebutton.Name = "btnUpdate";

                   deletbutton.HeaderText = "Delete Classes";
                   deletbutton.Text = "Delete";
                   deletbutton.Name = "btnDelete";

                   updatebutton.UseColumnTextForButtonValue = true;
                   deletbutton.UseColumnTextForButtonValue = true;
                   // addsectionbutton.UseColumnTextForButtonValue = true;

                   gvsubjectsetup.Columns.Add(updatebutton);
                   //  gvsubjectsetup.Columns.Add(addsectionbutton);
                   gvsubjectsetup.Columns.Add(deletbutton);

                   // ADD click event on button

                   gvsubjectsetup.CellClick += new DataGridViewCellEventHandler(gvsubjectsetup_click);
                   // gvsubjectsetup.DataSource = datatable;
                   gvsubjectsetup.DataSource = new BindingSource(datatable, null);
               }
               else
               {
                   return;
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
           }
       }











//这里我处理活动







< br $>









//here i handle event






public void gvsubjectsetup_click(object sender, DataGridViewCellEventArgs e)
       {
           try
           {
               Int32 id = 0;

              if (gvsubjectsetup.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)


              {
                   if ((e.RowIndex > 0) || (e.ColumnIndex == gvsubjectsetup.Columns["btnUpdate"].Index) || (e.ColumnIndex == gvsubjectsetup.Columns["btnDelete"].Index))
                   {
                       if (e.ColumnIndex == gvsubjectsetup.Columns["btnUpdate"].Index)

                       {
                           id = (Int32)gvsubjectsetup[0, e.RowIndex].Value;
                           string s = "update subject";

                           Subjectpopwindows popwin = new Subjectpopwindows(s, id);
                           popwin.Show();

                       }
                       else if (e.ColumnIndex == gvsubjectsetup.Columns["btnDelete"].Index)
                       {
                           int subneme = (Int32)gvsubjectsetup[0, e.RowIndex].Value;

                           {
                               DialogResult result = MessageBox.Show("Do You Want to delete Class " + subneme + "?", "Delete", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                               if (result.Equals(DialogResult.OK))
                               {
                                   string delete = "  DELETE FROM dbo.Subjects WHERE Subject_id='" + subneme + "'";
                                   Class1.insertrecord(delete);
                                   MessageBox.Show("Delete Successfully !");
                                   Subjectseup();
                                   return;
                               }
                               else
                               {
                                   return;
                               }
                           }
                       }
                       else
                           return;
                   }
                   else
                   {
                       return;
                   }

               }
               else
               {
                   return;
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
               return;
           }
       }

推荐答案

您是否两次调用Subjectseup()?

这将导致按钮处理程序被调用两次。
Are you calling Subjectseup() twice?
This would cause the button handler to be called twice.


这篇关于如何在win格式中处理网格视图按钮中的事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆