码农的空间

codding
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

让gridview默认处于编辑模式并取得编辑后的值

Posted on 2009-08-18 10:32  我是孙海龙  阅读(1501)  评论(0编辑  收藏  举报
      这几天一直在忙一个煤矿上的项目,由于客户要求所有的页面默认要处于编辑模式,刚开始感觉没有什么难的,用Textbox控件自定义gridview就OK了,可是后来的一个页面用这种方法就没法解决了。冥思苦想~~~
      终于让我发现了一个更好的让gridview自动处于编辑模式的方法。
      gridview控件有两个方法:OnRowDataBound和OnRowCreated,在OnRowDataBound中取出cell中的值存入TextBox,然后把Textbox加入Cell的Controls集合中,记住添加的时候一定要用Controls.AddAt方法指定索引,要不然没有办法取回编辑后的值!最后让OnRowCreated方法也触发OnRowDataBound事件。这样就可以利用Cell的Controls[索引]取回编辑后的值了。
附代码:
if (e.Row.RowType == DataControlRowType.DataRow)
            {
                GridViewRow row = e.Row;
                for (int index = 0; index < row.Cells.Count; ++index)
                {
                    TextBox tb = new TextBox();
                    tb.Text = row.Cells[index].Text;
                    tb.CssClass = "text";
                    tb.Width = 100;
                    tb.ID = index.ToString();
                    row.Cells[index].Controls.Clear();
                    row.Cells[index].Controls.AddAt(0, tb);
                }
            }

注:TextBox控件必须加上ID,否则无法查找!