none
求打救:关于datagridbuttoncolumn的问题 RRS feed

  • 问题

  • 如图所示,我希望通过点击按钮来触发一个方法,修改数据库的数据,然后button的text改变为“已处理”

    我的Click方法如下:

            private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.Columns[e.ColumnIndex].Name == "button")
                {
                    StudentInformationBLL b = new StudentInformationBLL();
                    string a = this.dataGridView1.Columns["stuID"].ToString();
                    b.c_handle(a);
                    if (MessageBox.Show("处理成功!", "", MessageBoxButtons.OK) == DialogResult.OK)
                    {
                        dataGridView1.Columns[e.ColumnIndex].Name = "已处理";
                    }
                }
            }

    可是运行后点击按钮“处理”之后只显示“处理成功”,函数 b.c_handle(a)没有处理,按钮的text也没有改变

     

     



    • 已编辑 only-H 2011年11月30日 8:11
    2011年11月30日 7:50

答案

  • 根据你的代码,没有必要去判断MessageBox,因为这里的MessageBox不是询问是否需要更新。你应该直接更新;另外应该用Value属性,并不是Name。看看我的示例代码:

     private void dataGridView1_CellContentClick(object senderDataGridViewCellEventArgs e)
            {
                //这儿调用你的更新程序方法
                MessageBox.Show("更新成功!");
                dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "已经更新";
            }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    • 已标记为答案 only-H 2011年11月30日 9:01
    2011年11月30日 8:31
    版主

全部回复

  • 根据你的代码,没有必要去判断MessageBox,因为这里的MessageBox不是询问是否需要更新。你应该直接更新;另外应该用Value属性,并不是Name。看看我的示例代码:

     private void dataGridView1_CellContentClick(object senderDataGridViewCellEventArgs e)
            {
                //这儿调用你的更新程序方法
                MessageBox.Show("更新成功!");
                dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "已经更新";
            }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    • 已标记为答案 only-H 2011年11月30日 9:01
    2011年11月30日 8:31
    版主
  • 嗯,修改好了,可是修改数据库数据的函数b.c_handle()没有执行到,现在只是改变了按钮的text值
    2011年11月30日 8:45
  • 嗯,修改好了,可是修改数据库数据的函数b.c_handle()没有执行到,现在只是改变了按钮的text值

    应该是可以调用的。请把我第一个回答的MessageBox上面插入你的更新代码。或者请列出你目前的代码。谢谢!
       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月30日 8:47
    版主
  •  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.Columns[e.ColumnIndex].Name == "button")
                {
                    StudentInformationBLL b = new StudentInformationBLL();
                    string a = dataGridView1.Rows[e.RowIndex].Cells["stuID"].Value.ToString();
                    b.c_handle(a);
                    MessageBox.Show("处理成功!");
                    dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "已处理";
                }
            }

     

    终于全部修改好了,谢谢你哈!

    2011年11月30日 8:55