求一段代码类,该类是继承 GridView 的类,做成自定义控件也可以;
  里面默认添加两模板列,一列带CheckBox控件的,另一列带LinkButton控件的;或者传一些参数可任意添加模板列的最好。  谢谢!

解决方案 »

  1.   

    你没用下ASpNETpager 试试
    http://topic.csdn.net/u/20090610/08/34960092-3b30-41c7-ae52-b8f5b0ac27a2.html
      

  2.   

    gridview已经可以实现,没必要吧感觉
      

  3.   

    你在一个页面用代码怎么去加这两个模板列,把这些代码转移到继承的类里面的OnLoad事件中看看
      

  4.   

    devexpress
    这家公司的控件肯定适合你
      

  5.   


    谢 9 楼的devexpress 感觉大了,我只要这一个功能而已!
      

  6.   

    想实现什么样的功能呢?非要这样写,GridView的功能我觉得已经够用了,
    非要要的话,我星期一来了给代码,周末回家瞅瞅。。
      

  7.   

    只要一个模板列? 这不很简单的麻。点GRIDVIEW右上的三角,选择列追加,-- 然后选择 Templatefield.再点 teTemplate编辑,选中你要追加的那列ITEMteTemplate( 这个是 显示模式),然后拉CHECKBOX控件进来。OK
      

  8.   

    linkbutton同理。 楼上所说的devexpress  已经发展到 developer express 2009 vol 1 版本了哦。 功能确实很简单, 但是有DEMO和视频, 学习起来也是很快的。
      

  9.   

    把gridview拖到用户控件里,最简单。
      

  10.   

    GridView直接可以添加用于想要的控件进去的,为何自己还要重新写一个呢?
      

  11.   

    //=========================ButtonField==============================
    5,ButtonField:按钮列,可在列中放置一个按钮
    ButtonType:按钮的类型,Link就是LinkButton,在网页上显示一个超级链接,Button,在网页上显示一个按钮,Image,在网页上显示一个图像按钮
    ImageUrl:当ButtonType为Image时显示的图片
    CommandName:命令名,可通过命令名区分每个按钮的功能,因为GridView控件中所有的按钮在后台都对应同一个事件RowCommand,所以我们必须设置CommandName属性来区别我们点击的是哪一个按钮,执行哪些操作。
    注意:你无法在控件中通过双击按钮来进入按钮的点击事件。好吧,下面我们来使用按钮列来实现删除某条数据。
    我们添加了一个按钮列,Text为“删除”,CommandName设置为“del”在GridView的RowCommand事件中编写如下代码://首先我们通过我们设置的CommandName属性来判断点击的是哪个按钮
    if (e.CommandName == "del")
    {
        //接下来我们可以通过e.CommandArgument来获取当前点击的是哪一行
        int rowindex = Convert.ToInt32(e.CommandArgument);
        //接下来我们像操作DataTable一样,通过行号和列号来获得我们需要的借书证号
        string jszh = Gv1.Rows[rowindex].Cells[0].Text;
        //好吧,下面我们根据获取的这个借书证号把数据库中的数据删除掉
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString);
        SqlCommand cmd = new SqlCommand("", con);
        cmd.CommandText = "delete from 读者表 where 借书证号='" + jszh + "'";
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
        //接下来在重新绑定GridView
    }这里可能同学认为通过Gv1.Rows[rowindex].Cells[0].Text获取值有些太麻烦了,而且我们还得记住列的标号,而且我们还不得不把该列添加在控件上,这样的话,如果我们显示列的顺序发生改变,我们不得不重新修改程序。那这里,我们可以采用另外一种方式存放我们数据库中的主键,或者一些主要的字段,然后我们通过一种简单的,或者更直接的方式获取值。首先,我们找到GridView的DataKeysName属性,然后我们把我们需要的关键数据的字段填写在属性中(多个字段以“,”分开),然后我们就可以通过Gv1.DataKeys[行号]["字段名"]的方式获取值了,使用前注意类型装换。
    //=======================CheckBox============================
    效果三:全选删除、多选删除实现全选、删除的方式有很多,我们这里介绍一下通过循环方式获取GridView中行中记录的方式实现。首先我们像上个例子一样将读者表中的数据绑定到GridView中,并在最前添加一个模板列,其中我们放入一个CheckBox控件,ID设置为Cb_sel
    然后我们在页面上添加一个按钮,在点击事件中实现全选,当然,这里最好的方式是放置一个CheckBox控件,根据控件的选中状态设置是否全选、还是取消全选。
    在页面放置一个CheckBox控件,设置其ID为Cb_all,AutoPostBack属性为True,并在其CheckedChanged事件中编写选中代码,同样根据循环方式
    for (int i = 0; i < Gv1.Rows.Count; i++)
    {
        CheckBox cb_s = (CheckBox)Gv1.Rows[i].FindControl("Cb_sel");
        //设置复选框的选中状态与全选复选框的状态一致
        //这样就实现了全选和全取消
        cb_s.Checked = Cb_all.Checked;
    }接下来我们放入一个删除按钮,实现多选删除,这个按钮的实现代码与全选基本一直,就是循环GridView中的每一行,然后获取其第一个格中的复选按钮,然后判断其选中状态,如果是选中的话,则实现删除。
    for (int i = 0; i < Gv1.Rows.Count; i++)
    {
        CheckBox cb_s = (CheckBox)Gv1.Rows[i].FindControl("Cb_sel");
        if (cb_s.Checked)
        {
            //执行删除操作
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString);
            SqlCommand cmd = new SqlCommand("", con);
            string jszh = Gv1.Rows[i].Cells[1].Text;
            cmd.CommandText = "delete from 读者表 where 借书证号='" + jszh + "'";
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
    //删除后调用绑定方法
    BindGrid();当然,我们应该在事务中执行删除操作,这样便可以保持数据的完整性。这里,我们对GridView中模板列的介绍基本完成,其实模板列还可以实现更加复杂的功能,就靠大家自己开发了。待续...
    //==================================================================
    以上是我课件中的一部分,其中包括按钮列和使用复选按钮实现全选和批量删除,供你参考!