第五章 数据绑定技术
一、数据绑定语法:
用于绑定控件的表达式置于 <%# ......%> 标记之间
1、绑定到属性:<%# 属性名%>
eg: <%= Hello %>:=它是内联引用方式,可以引用C#代码。
<%# 属性名%>:#它可以引用.cs文件中的代码的字段,但这个字段必须初始化后,在页面的Load事件中使用Page.DataBind方法来实现
2、绑定到表达式:<%# (int)Eval(属性名) - (int)Eval(属性名)%>
eg: <%=3*28 %>
<%#3*28 %>
3、绑定到集合:<%# 集合名%>
eg:借助服务器控件,在后台实现绑定
//设置DropDownList数据源
this.DropDownList1.DataSource = 集合;
//执行绑定操作
this.DropDownList1.DataBind();
4、绑定到函数:<%# 方法(参数1,…)%>
eg:<%# "当前时间是:"+DateTime.Now.ToString() %>
5、单向绑定属性:<%# Eval(“字段名”)%>
6、双向绑定属性:<%# Bind(“字段名”)%>
二、数据绑定控件
GridView:
普通列的绑定: <asp:BoundField HeaderText="姓名" DataField="stuName" />
自定义列的绑定:
<asp:TemplateField HeaderText="性别">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("stusex").ToString()=="男"?"帅哥":"美女" %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
分页效果的实现:
1、将GridView的AllowPaging属性设置为true。
2、设置PageSize属性指定每页显示的数据行数量
3、触发PageIndexChanging事件
在事件中指定分页索引:this.gv_Student.PageIndex = e.NewPageIndex;
重新绑定数据源: this.gv_Student.DataSource = 数据源表;
this.gv_Student.DataBind();
执行删除、编辑等操作的实现:
1、字段需要是自定义字段<asp:TemplateField> </asp:TemplateField>
2、在<ItemTemplate></ItemTemplate>字段中添加执行操作的控件 ,在控件中设置操作名称CommandName和操作参数CommandArgument属性:
eg: <asp:Button ID="Button1" runat="server" Text="删除" CommandName="del" CommandArgument='<%#Eval("stuid") %>' />
3、触发GridView中_RowCommand事件
①判断操作名称 eg: if (e.CommandName == "del") {}
②获取操作参数 eg: int id = int.Parse( e.CommandArgument.ToString());
③执行具体操作
eg: int num =SqlHelper.NonQueryMethod("delete from StuInfo where stuid=" + id);
执行页面跳转带参数:
前台跳转:
eg: <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl= '<%# "WebForm2.aspx?id=" +Eval("stuid") %>' >查看详情</asp:HyperLink>
eg: <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl='<%#"~/EditWebForm.aspx?stuid="+Eval("stuid") %>'>编辑</asp:LinkButton>
后台跳转:
eg: Response.Redirect("深入了解GridView.aspx?id="+id);
eg: Response.Write("<script>alert('修改成功!');window.location.href='深入了解GridView.aspx';</script>");
删除前询问:
eg: OnClientClick="return confirm('你确定要删除吗?')"
<asp:Button ID="Button1" runat="server" Text="删除" OnClientClick="return confirm('你确定要删除吗?')" CommandName="del" CommandArgument='<%#Eval("stuid") %>' />