1).用代码绑定可以将任何实现了IEnumerable接口的对象绑定到数据绑定控件。如ListBox1.DataSource=new object[]{"aa","bb","cc"};ListBox1.DataBind();
2). 由于数据绑定控件默认会将数据保存在ViewState中,因此不会每次刷新页面都会重新加载数据,只有第一次需要加载(!IsPostback);
3). 由于代码绑定在禁用ViewState的情况下有很多麻烦事,因些推荐用DataSourceID的方式,控件会自己来判断是否应该重新取得数据。
实例:
目录图像:
步骤:
1.建立数据表,在App_Data下建立user.mdf数据表,建立数据表后并在DAL文件夹下建立DataSetUser.xsd数据集,点击菜单:“生成”--〉“生成解决方案”,不这样做有可能在下一步骤中选择数据源是为空。
如下图:
2.在表单上拖放一个ObjectDataSource控件,并配置数据集,如下二个图:
3.放一个dropdownlist控件,让它显示username,值为id字段.
并给它手工加个“请选择名字”项,它不是数据集的一部分,并启用“autopostback”项,便于选择其中的项时会显示它的ID
3.在表单上放置一个BulletedList1控件,和上面设置基本一样,也让它指向objectDataSoruce数据源,显示列为Age,默认的值为id。
4.放置一个BulletedList2控件,我们手工设置它的数据源
在page的load的事件中写下如下代码:
代码设置数据源时要用datasource,而用数据源时则用datasourceid属性。
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BulletedList2.DataSource = new string[] {"aa","bb","cc","dd" }; BulletedList2.DataBind(); } }
5.为了让dropdownlist中的"请选择名字"能显示出来,则设置dropdownlist的AppendDataBoundItems为True,否则程序运行时,手工加的项并不会出现。
为了显示dropdownlist选择时的id,可以在它的SelectIndexChanged写入以下的代码:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { Label1.Text = DropDownList1.SelectedItem.Value; }
以下为它的html代码,建议用手工的方式来设置它的datasource或datasorce的一些属性,要不手工写许多以下的代码,很是麻烦。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="WebApplication2.DataSource.DAL.DataSetUserTableAdapters.T_UsersTableAdapter" UpdateMethod="Update"> <DeleteParameters> <asp:Parameter Name="Original_ID" Type="Int64" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="UserName" Type="String" /> <asp:Parameter Name="Age" Type="Int32" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="UserName" Type="String" /> <asp:Parameter Name="Age" Type="Int32" /> <asp:Parameter Name="Original_ID" Type="Int64" /> </UpdateParameters> </asp:ObjectDataSource> </div> <asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True" AutoPostBack="True" DataSourceID="ObjectDataSource1" DataTextField="UserName" DataValueField="ID" onselectedindexchanged="DropDownList1_SelectedIndexChanged"> <asp:ListItem>请选择名字</asp:ListItem> </asp:DropDownList> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <br /> <asp:BulletedList ID="BulletedList1" runat="server" DataSourceID="ObjectDataSource1" DataTextField="Age" DataValueField="ID"> </asp:BulletedList> <br /> 手工绑定:<asp:BulletedList ID="BulletedList2" runat="server"> </asp:BulletedList> </form> </body> </html>