求段代码类,继承 GridView 的类,里面能默认添加两模板列CheckBox和LinkButton列 求一段代码类,该类是继承 GridView 的类,做成自定义控件也可以; 里面默认添加两模板列,一列带CheckBox控件的,另一列带LinkButton控件的;或者传一些参数可任意添加模板列的最好。 谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你没用下ASpNETpager 试试http://topic.csdn.net/u/20090610/08/34960092-3b30-41c7-ae52-b8f5b0ac27a2.html gridview已经可以实现,没必要吧感觉 你在一个页面用代码怎么去加这两个模板列,把这些代码转移到继承的类里面的OnLoad事件中看看 devexpress这家公司的控件肯定适合你 谢 9 楼的devexpress 感觉大了,我只要这一个功能而已! 想实现什么样的功能呢?非要这样写,GridView的功能我觉得已经够用了,非要要的话,我星期一来了给代码,周末回家瞅瞅。。 只要一个模板列? 这不很简单的麻。点GRIDVIEW右上的三角,选择列追加,-- 然后选择 Templatefield.再点 teTemplate编辑,选中你要追加的那列ITEMteTemplate( 这个是 显示模式),然后拉CHECKBOX控件进来。OK linkbutton同理。 楼上所说的devexpress 已经发展到 developer express 2009 vol 1 版本了哦。 功能确实很简单, 但是有DEMO和视频, 学习起来也是很快的。 把gridview拖到用户控件里,最简单。 GridView直接可以添加用于想要的控件进去的,为何自己还要重新写一个呢? //=========================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中模板列的介绍基本完成,其实模板列还可以实现更加复杂的功能,就靠大家自己开发了。待续...//==================================================================以上是我课件中的一部分,其中包括按钮列和使用复选按钮实现全选和批量删除,供你参考! 如何获取System.Drawing Image 对象的文件大小(?b) 求助关于一个图片效果的,类似于这样 请教个纯HTML表格导出到Excel的问题 请教:Repeater控件的问题 数据列COLUMS的类型转换,急啊~在线等 高手们帮我看下,实现上传图片预览 哪位好心人能告诉我怎么在html文件里用recordset显示数据库的记录???? 请教一个页面提交的问题,多谢 急:一个关于DropDownList的问题! 询问一下这个正则表达是怎么写? asp.net网站发布的失败,请帮忙 最近做了个.net网站,打开速度太慢,怎么办大家进来帮我看看
http://topic.csdn.net/u/20090610/08/34960092-3b30-41c7-ae52-b8f5b0ac27a2.html
这家公司的控件肯定适合你
谢 9 楼的devexpress 感觉大了,我只要这一个功能而已!
非要要的话,我星期一来了给代码,周末回家瞅瞅。。
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中模板列的介绍基本完成,其实模板列还可以实现更加复杂的功能,就靠大家自己开发了。待续...
//==================================================================
以上是我课件中的一部分,其中包括按钮列和使用复选按钮实现全选和批量删除,供你参考!