GridView控件的使用方法及练习
1.不编写代码制作简单的数据编辑、显示、删除的页面。
A。Web Config存储连接字符串的方法
见http://www.coolsdu.cn/pjblog/article.asp?id=36
B。用GridView连接SqlDataSource,直接选择数据源即可。在代码中是
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="UserID"
DataSourceID="SqlDataSource1"
C。直接利用向导生成GridView的代码。
D。右键显示智能标记可以看到启用分页,启用排序的选项。
GridView分页
当GridView的AllowPaging属性设置为True的时候,我们实现了分页,我们还可以对分页进行一些个性化的设置。常用的属性包括:PageIndex――设置数据显示的当前页面,默认是0,也就是数据的首页。PageSize ――也就是一页显示多少条记录,默认为10条。在PagerSettings中,还可以对分页的导航按钮进行详细设置,在Mode属性中,可以设置:Numeric――默认的,分页用数字表示,1,2,3……。NextPrevious、NextPreviousFirstLast、NumericFirstLast均可顾名思义,显示上一页、下一页、首页、末页等。当Mode设定不是Numeric时,那么可以通过设定FirstPageText、LastPageText等属性来实现分页导航时,到首页、末页、下页、上页时显示的文字提示。
如果想实现分页界面的完全自动控制,还可以点击GridView右键,选择编辑模版-PagerTemplate来实现,在模版中加入若干个Button控件,然后将Button控件的CommandName属性设置为Page,将CommandArgument属性分别设置为First、Last、Prev、Next或者一个数字,即可实现分页操作。
GridView中的编辑、删除、排序
与分页类似,直接在显示智能标记中有启用编辑,启用删除(必须是对应的SqlDataSource1有DeleteCommand、UpdateCommand)
GridView中的自定义列
我们现在假设有一个表,其中有一个字段是username,我们现在产生一个自定义列,自定义列中包括一个操作,删除此用户。我们首先右键点击GridView,在智能标记中,选择编辑列,添加一个模版列,然后编辑模版中的ItemTemplate,加入一个ImageButton控件,点击该控件即可修改ImageUrl、AlternateText、CommandArgument、CommandName。
其中ImageUrl---图像的URL AlternateText---相当于alt CommandName--按钮的名字 CommandArgument--该按钮的参数
在这里把这个参数绑定到 UserID。绑定方法:CommandArgument='<%# DataBinder.Eval(Container.DataItem,"UserID") %>'。如果单向绑定,一般采用Eval,也就是说数值只从数据源传到页面上,如果双向绑定,也就是采用Bind的话,对数据的修改可以回传到数据源之中。
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:ImageButton id="deleteBtn" ImageUrl="~/images/delete.gif" AlternateText="删除此项" runat="server" CommandName="delete" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"UserID") %>' /></ItemTemplate>
<ItemStyle Width="300px" BorderWidth="1px" HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
</asp:TemplateField>
GridView中的RowDataBound事件
在创建gridView控件时,必须先为GridView的每一行创建一个GridViewRow对象,创建每一行时,将引发一个RowCreated事件;当行创建完毕,每一行GridViewRow就要绑定数据源中的数据,当绑定完成后,将引发RowDataBound事件。如果说我们可以利用RowCreated事件来控制每一行绑定的控件,那么我们同样可以利用RowDataBound事件来控制每一行绑定的数据,也就是让数据如何呈现给大家。
在这里点击这个删除图片后,一般弹出一个对话框,这就需要没一行的图片都需要添加这样的javascript,
protected void UserView_RowDataBound(object sender, GridViewRowEventArgs e)
{
///找到删除按钮
ImageButton deleteBtn = (ImageButton)e.Row.FindControl("DeleteBtn");
if (deleteBtn != null)
{
///添加删除确认对话框
deleteBtn.Attributes.Add("onclick", "return confirm('你确定要删除所选择的数据项吗?');");
}
}
GridView中的RowCommand事件
在点击这个删除图片按钮后就会触发一个RowCommand。在设置删除图片按钮有这两个CommandArgument、CommandName参数,这里就用得到了。
protected void UserView_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "delete")
{
///删除数据
User user = new User(); //这里是后台代码,删除用户的类,未实现
user.delUser(Int32.Parse(e.CommandArgument.ToString()));
///重新绑定控件的数据
BindUserData();
Response.Write("<script>alert('" + "删除数据成功,请妥善保管好你的数据!" + "');</script>");
}
}
作业:参考上面的制作方法,制作一个类似的用户管理的页面(主要是那个删除图片按钮),可以扩充功能。
参考页面:
