加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

更新datagridview中一行数据并刷新一次让焦点还在原来所在行

(2010-12-30 11:11:12)
标签:

杂谈

分类: Windows窗体程序

int index;

if (dgvFeeInfo.SelectedRows.Count > 0)  //判断选中的行是否大于0
            {
                n = dgvFeeInfo.SelectedRows.Count;

                DialogResult dr = Message.MsgShow(Message.msgDel);
                if (dr == DialogResult.Yes)          //是否确定更新
                {
                    for (int i =n; i >= 1; i--)
                    {
                        if (dgvFeeInfo.SelectedRows[i - 1].Cells[4].Value.ToString() == "有效")
                        {

                            //执行更新语句
                            ChargeID1 = dgvFeeInfo.SelectedRows[i - 1].Cells[0].Value.ToString();
                            DataAdapter.Execute(QuerySql.sqlUpdateCharge, new string[]
                                                               { Common.UserName,DateTime.Now.ToString(),ChargeID1 });
                            DataAdapter.Execute(QuerySql.sqlUpdateChargeDetail, new string[]
                                                               { Common.UserName, DateTime.Now.ToString(), ChargeID1 });
                            index = dgvFeeInfo.CurrentRow.Index; //获取当前选中行的行号
                        }
                    }
                    dsFeeInfo = DataAdapter.Query(QuerySql.sqlCharInfoAll); //DataAdapter.Query是执行SQL的方法 dsFeeInfo 是一个dataset对象
                   
                    QueryData(); //重新绑定一次数据源
                    
                    //使焦点还在所删除的那行上
                    dgvFeeInfo.Rows[index].Cells[1].Selected = true; //dgvFeeInfo为datagridview的名称
                    dgvFeeInfo.CurrentCell = dgvFeeInfo.Rows[index].Cells[1];

//Rows[i].Cells[j]为某一行某一个单元格

如果需要多次为datagridview绑定数据源的话,可以考虑先把所有的数据读出来放在一个DataTable当中,以后每次读取数取数据都从DataTable中读,这样可以提高效率,如果有条件查询的话,可以用DataTable的 RowFilter属性,这相当于SQL语句后的WHERE子句进行过滤,如

dtFeeInfo.DefaultView.RowFilter = @"CardID like '%" + rtbCard.Text.Trim() +
                                                       "%' and chargebody ='" + cbChargee.Text.Trim() +
                                                       "' and  chargetime >='" + dtpBegTime.Value.ToString() +
                                                       "' and chargetime<='" + dtpEndTime.Value.ToString() + "'";

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有