显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据,例如 GridView 控件。通过使用 GridView 控件,您可以显示、编辑和删除多种不同的数据源(例如数据库、XML 文件和公开数据的业务对象)中的数据。
1. GridView数据绑定基础
GridView大部份场合下都是用来绑定数据源,进行数据的显示。一般情况下,可以绑定到SqlDataSource控件,DataTable对象,DataView对象..也可以绑定到列表对象。
GrdiView提供了两种数据方式的绑定:DataSourceID与DataSource
● 使用 DataSourceID 属性进行数据绑定,此选项使您能够将 GridView 控件绑定到数据源控件。使用 DataSourceID 属性绑定到数据源时,GridView 控件支持双向数据绑定。除可以使该控件显示返回的数据之外,还可以使它自动支持对绑定数据的更新和删除操作。
● 使用 DataSource 属性进行数据绑定,此选项使您能够绑定到包括 ADO.NET 数据集和数据读取器在内的各种对象。此方法需要为所有附加功能(如排序、分页和更新)编写代码。
GridView会自动为一个布尔类型字段呈现复选框。
例1:GridView绑定到一个List对象中
GridView绑定到List对象
<script runat=”server”>
public class CartItem{
private int _id;
public string _description;
public int Id{
get { return _id; }
}
public string Description{
get { return _description; }
}
public CartItem(int id,string description){
_id = id;
_description = description;
}
}
public partial class employeeManage_schoolyardPlay : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
List<CartItem> shoppingCart = new List<CartItem>();
shoppingCart.Add(new CartItem(1, "notebook Computer"));
shoppingCart.Add(new CartItem(2, "HD Plasma Televsion"));
shoppingCart.Add(new CartItem(3, "Lava Lamp"));
GridView2.DataSource = shoppingCart;
GridView2.DataBind();
}
}
</script>
<asp:GridView ID="GridView2" runat="server" AllowPaging="True"
AutoGenerateColumns="False" PageIndex="2">
<Columns>
<asp:BoundField DataField="Id" HeaderText="编号 " />
<asp:BoundField DataField="Description" HeaderText="描述" />
</Columns>
</asp:GridView>
2. 获取GridView被选中行的信息。
2.1 GridView有两个属性:一个叫AutoGenerateSelectButton,一个叫DataKeyNames。
AutoGenerateSelectButton设置为true时,GridView就会出现一个选择键。而DataKeyNames则表示获取或设置一个数组,该数组包含了显示在 GridView 控件中的项的主键字段的名称。当用户点击选择时,就可以取出主键字段的值。取GridView选中的值是通过GridView的SelectedValue属性来实现的。
例2:点击选择获得主键的值
点击选择获得主键的值
<script runat=”server”>
protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
{
Label1.Text = GridView2.SelectedValue.ToString();
}
</script>
<asp:GridView ID="GridView2" runat="server" AllowPaging="True"
AutoGenerateColumns="False"
onselectedindexchanged="GridView2_SelectedIndexChanged"
AutoGenerateSelectButton=true DataKeyNames="Id"> <!-- 设置DataKeyName为Id字段 -->
<Columns>
<asp:BoundField DataField="Id" HeaderText="编号 " />
<asp:BoundField DataField="Description" HeaderText="描述" />
</Columns>
</asp:GridView>
当然,如果以上设置DataKeyName为Description,则点击选择后Label显示的为选择行的Description值。
例3:一个主从GridView例子
主从GridView
<!-- 主GridView,选择一行后,在另一个GridView中显示详细表格 -->
<asp:GridView id=”grdMovieCategories” DataKeyNames=”Id”
DataSourceID=”srcMovieCategories” AutoGenerateSelectButton=”true” SelectedRowStyle-CssClass=”selectedRow”
CssClass=”gridView” Runat=”server” />
<!-- 主GridView的DataSource -->
<asp:SqlDataSource id=”srcMovieCategories” ConnectionString=”<%$ ConnectionStrings:Movies %>”
SelectCommand=”SELECT Id, Name FROM MovieCategories” Runat=”server” />
<!-- 细表GridView,根据grdMoveCategories表