数据查询与展示GridView
GridView连接数据源
编码指定数据源
this.GridView1.DataSource = 返回值为集合的方法;
this.GridView1.DataBind();
以下为使用数据源控件
数据源控件 |
|
控件名 |
说明 |
SqlDataSource |
用来从SQL Server、ODBC、Oracle等数据源中检索数据。通过连接字符串指定。 |
AccessDataSource |
继承自SqlDataSource,专门用于从Access数据库中检索数据 |
ObjectDataSource |
能够将来自业务逻辑层的数据对象与表示层中的数据绑定控件绑定,实现数据的显示、编辑等任务 |
XmlDataSource |
用于检索和处理XML等分层数据。它可以从文件、URL或者也包含XML内容的字符串中加载XML数据 |
SiteMapDataSource |
专门处理类似站点地图的XML数据。默认情况下,数据源好似以.sitemap为扩展名的XML文件 |
常见数据绑定控件 |
|
控件名称 |
说明 |
GridView |
通过表格方式实现数据的展示,并集成编辑、分页、排序等功能。 |
DetailsView |
显示单条记录的详细信息,并支持对记录的添加、删除、修改等。 |
DropDownList |
下拉菜单控件 |
数据绑定控件绑定数据源语法
数据绑定控件ID.DataSourceID = 数据源控件ID;
绑定字段 |
|
BoundField |
用于显示普通文本,是默认的数据绑定列的类型,一般自动生成的列就是该类型 |
GridView查询所有信息
步骤:1、添加GridView控件(数据)——配置好显示列
2、在GridView 任务选择数据源下拉框中选择新建数据源——在数据源配置向导的选择数据源类型中选择对象——单击确定
3、在选择业务对象下拉框中选择需要的业务逻辑层方法——单击下一步——在定义数据方法中选择SELECT——在选择方法下拉框中选择所需要的方法
GridView中添加新列(添加外键列)
步骤:1、在GridView 任务——单击添加新列——在添加字段的选择字段类型下拉框中选择TemplateField——并添加页眉文本——单击确定
2、在GridView 任务——单击编辑模板——在GridView 任务模板编辑模式的显示下拉框中选择刚才添加的新列——在ItemTemplate中添加一个Lable控件——在Lable任务中——单击编辑DataBindings——在Lable DateBindings对话框中为Text绑定数据——首先选中字段绑定——在字段绑定下拉框中选择需要的字段——然后在选择自定义绑定进行代码表达式修改对要显示的外键字段对象进行修改来显示
相应的属性——单击确定——在GridView 任务——单击结束模板编辑
DropDownList控件绑定数据源连接GridView控件根据条件显示
步骤:1、添加DropDownList控件(标准)——在DropDownList任务——单击选择数据源——在选择数据源下拉框中选择新建数据源——在数据源配置向导的选择数据源类型中选择对象——单击确定
2、在选择业务对象下拉框中选择需要的业务逻辑层方法——单击下一步——在定义数据方法中选择SELECT——在选择方法下拉框中选择所需要的方法
3、在 选择要 DropDownList 中显示的数据字段下拉框中选择所需的字段
4、在 为DropDownList 的值选择数据字段下拉框中选择所需的字段(一般选择ID字段)
5、将DropDownList控件AutoPostBalck改为true
6、添加GridView控件(数据)——配置好显示列
7、在GridView 任务选择数据源下拉框中选择新建数据源——在数据源配置向导的选择数据源类型中选择对象——单击确定
8、在选择业务对象下拉框中选择需要的业务逻辑层方法——单击下一步——在定义数据方法中选择SELECT——在选择方法下拉框中选择所需要的代参方法——单击下一步
9、在定义参数对话框中的参数源下拉框中选择Control——在ControlID下拉框中选择DropDownList控件名——在DefaultValue文本框中
可以给定DropDownList控件所选中的默认值(也可以不写)——单击完成
在后置代码中获得选中的值DropDownList.SelectedValue.ToString();
DropDownList 的常用属性和事件 |
|
属性或事件 |
说明 |
SelectedItem 属性 |
设置获取下拉菜单的选中项,该属性的类型为System.Web.UI.WebControls.ListItem,所有列表控件(ListControl)中的项都是该类型。他常用的两个属性是Text和Value。Value用于设置获取项的值;Text用于设置获取显示文本 |
SelectValue 属性 |
获取选择项的值,与SelectedItem.Value一致 |
DataTextField 属性 |
获取或设置提供列表项文本内容的数据源的字段 |
DataValueField 属性 |
获取设置提供列表项值内容的数据源的字段 |
AutoPostBack 属性 |
当选中一个列表项时,DropDownList 控件状态是否回发到服务器。默认情况下时false |
SelectIndexChanged 事件 |
当列表控件选定的内容改变并发回服务器时发生。该事件仅当 AutoPostBack 属性设置为true是有效 |
//手动绑定DropDownList
this.ddlType.DataSource = RoomTypeManager.GetAllRoomTypes();
this.ddlType.DataTextField = "TypeName";
this.ddlType.DataValueField = "TypeId";
ddlType.DataBind();
//向DropDownList添加第一项
ListItem list = new ListItem();
list.Text = "--选择--";
list.Value = "0";
ddlType.Items.Insert(0, list);
GridView 删除
步骤:1、先查询所有信息并显示在GridView中
2、在 ObjectDataSource 任务——单击配置数据源——单击下一步——在定义数据方法中选择DELETE(不用设置ID因为ID是由DataKeyNames设置的)——在选择方法下拉框中选择所需要的代参方法——单击完成
3、在 GridView 属性中——DataKeyNames属性——单击——在数据字段集合编辑器中——在可用数据字段——选择ID——单击确定
4、在GridView 任务——将启用删除勾上
5、加删除页眉——在GridView 任务——单击编辑列——在选定字段中选定删除——在属性窗口中修改HeaderText属性——单击确定
GridView实现全选
步骤
1、在GridView 任务——选择添加新列——在添加字段的选择字段类型下拉框中选择TemplateField——并添加页眉文本——单击确定
2、在GridView 任务——单击编辑模板——在GridView 任务模板编辑模式的显示下拉框中选择刚才添加的新列——在HeaderTemplate中添加一个HTML中的CheckBox并添加相应的文字描述——在ItemTemplate中添加标准中的CheckBox——在GridView 任务——单击结束模板编辑
3、在aspx源码中编写JavaScript脚本,如下:
<script type="text/javascript" language="javascript">
function GetAllCheckBox(CheckAll)
{
var items = document.getElementsByTagName("input");
for(var i=0;i<items.length;i++)
{
if(items[i].type == "checkbox")
{
items[i].checked = CheckAll.checked;
} } }
</script>
4、调用方法
<asp:TemplateField HeaderText="全选">
<HeaderTemplate>
<input id="cbAll" type="checkbox" onclick="GetAllCheckBox(this)"/>全选
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
5、在后置代码中获得多选项的ID
for (int i = 0; i < this.GridView1.Rows.Count; i++) //this.GridView1.Rows.Count获得本页GridView控件上所有行数
{
//获得GridView每一行中的控件名为checkselect的控件,也就是说获得的是GridView每一行中的CheckBox控件
CheckBox cb = (GridView1.Rows[i].FindControl("checkselect")) as CheckBox;
if (cb.Checked == true) //判断是否选中
{
//获得选中行的第一列值(一般将第一列绑定为ID列),这样就可以根据此处的Id进行删改了
Convert.ToInt32(GridView1.Rows[i].Cells[0].Text.ToString());
} }
实现光棒
执行的事件是GridView的RowDataBound事件
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow) {
e.Row.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='#6699ff'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor");
} }
//根据修改、删除做处理(后置代码中)
protectedvoidGVRoomTypes_RowCommand(objectsender, GridViewCommandEventArgs e)
{
string cmd = e.CommandName;
int typeId = Convert.ToInt32(e.CommandArgument);
if (cmd == "De") {//删除
RoomTypeManager.DeleteRoomTypeByTypeId(typeId); }
else if (cmd == "Ed") { //修改
Page.Server.Transfer("EditRoomType.aspx?typeId=" + typeId);
} }
GridView详细显示
步骤:1、在GridView 任务——选择添加新列——在添加字段的选择字段类型下拉框中选择TemplateField——并添加页眉文本——单击确定
2、在GridView 任务——单击编辑模板——在GridView 任务模板编辑模式的显示下拉框中选择刚才添加的新列——在ItemTemplate中添加标准中的LinkButton——修改其ID属性、Text属性并设置它的CommandArgument属性(与此按钮相关联的命令参数)和CommandName属性(与此按钮相关的命令)
源码修改
<asp:TemplateField HeaderText="详细">
<ItemTemplate>
<asp:LinkButton ID="lkbParticular" runat="server" CommandArgument='<%# Eval("Id") %>' CommandName="xiang">详细
</ItemTemplate>
</asp:TemplateField>
3、在后置代码中编写下列事件(行按钮触发事件
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("参数")) //判断事件触发行中那个控件(有CommandName属性设置) {
int id = Convert.ToInt32(e.CommandArgument); //获得事件触发行的ID
Response.Redirect("#.aspx?id=" + id); //重定向到其他页面 } }
4、添加DetailsView控件——在DetailsView 任务——在选择数据源中选择新建数据源——在数据源配置向导的选择数据源类型中选择
对象——单击确定
5、在选择业务对象下拉框中选择需要的业务逻辑层方法——单击下一步——在定义数据方法中选择SELECT——在选择方法下拉框中选择
所需要的代参方法——单击下一步
6、在定义参数对话框中的参数源下拉框中选择QueryString——在QueryStringField文本框中添加所要获得参数(一般获得id)——在
DefaultValue文本框中可以给定默认值(也可以不写)——单击完成
7、美化显示——在DetailsView 任务——单击编辑字段——对字段进行编辑——单击确定
DetailsView 控件的常用属性和事件 |
|
属性或事件 |
说明 |
DefaultMode 属性 |
设置获取控件默认的状态(模式)。该属性为枚举值,分为 ReadOnly(显示)、Edit(修改)和Insert(添加) |
DataKey 属性 |
数据主键 |
DataKeyNames 属性 |
设置获取一个字符串,该字符串包含数据源中间的组合 |
ItemInserting 事件 |
单击添加按钮,执行添加方法之前执行 |
ItemInserted 事件 |
单击添加按钮,执行添加方法之后执行 |
ItemUpdating 事件 |
单击更新按钮,执行更新方法之前执行 |
ItemUpdated 事件 |
单击更新按钮,执行更新方法之后执行 |
数据绑定的写法Eval和Bind的对比 |
|
Eval() |
Bind() |
Eval是指读的,可实现格式化显示 |
Bind支持读/写功能,可将跟新后的数据提交回服务器。一般与TextBox等控件使用 |
在GredView设置方法
1、存储:在GridView的DataKeyNames属性设置ID
获得:在GridView的RowDataBound事件里 int ID = this.GridView1.DataKeys[e.Row.RowIndex].Value;
2、存储:在模板列的项目模板中添加控件设置控件的CommandArgument='<%# Eval("Id") %>'属性
获得:在GridView的RowCommand事件里int id = Convert.ToInt32(e.CommandArgument);