数据库绑定控件

来源:互联网 发布:网络主播工资条 编辑:程序博客网 时间:2024/05/21 11:09

数据绑定的方式:
使用数据绑定语法,可以将控件属性值绑定到数据,并指定值以对数据进行检索、更新、删除和插入操作。
数据绑定表达式包含在<%#和%>分隔符之内,可以配合使用Eval、Bind和XPath函数。
Eval函数用于定义单向(只读)绑定。
Bind函数用于定义双向(可更新)绑定。
除了通过在数据绑定表达式中调用Eval和Bind方法执行数据绑定外,还可以调用<%#和%>分隔符之内的任何公共范围代码,以在页面处理过程中执行该代码并返回一个值。
(1)GridView控件:
GridView的Columns集合可添加对象包括:
 BoundField、CheckBoxField、ImageField、HyperLinkField、CommandField、ButtonField、emplateField。
我们可以直接通过 Gridview1.DataSource = dt; Gridview1.DataBind();绑定数据。
GridView的排序与分页:
若要在GridView中启用排序UI,选中智能标记菜单中的“启用排序”,或者在HTML代码将AllowSorting属性设置为true。
设置列字段与GridView控件的SortExpression 属性关联,也即SortExpression被设置为与GridView的某列关联的单个字段名称。
GridView控件还通过选中智能标记中的“启用分页”,或者在HTML代码中将AllowPaging属性设置为true。
GridView能够对从数据源返回的任何支持ICollectio在设置分页后,还可以通过属性窗口
设置GridView控件的PageSize(每页显示大小)
可以设置PagerStyle中的HorizontalAlign为Center来使页码标签显示在脚注的中间
通过分别配置PagerStyle和PagerSettings属性,还可以自定义页导航的样式和设置。
PagerStyle确定页导航的外观和风格,而PagerSettings确定要使用的分页类型(数字或“Next/Previous”(下一页/上一页)按钮)、页导航位置和相关选项。
n接口的值自动进行分页 。
当然我们最后还要通过PageIndexChanging事件去触发。
  protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        Gridview1.PageIndex = e.NewPageIndex;
        //Gridview1.DataBind();
        MyBind();
    }
下面是aspx页面的代码:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_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>
    <a href="AddMessage.aspx">添加留言</a>
    <asp:gridview ID="Gridview1" runat="server" AutoGenerateColumns="False"
            onrowcancelingedit="Gridview1_RowCancelingEdit"
            onrowdeleting="Gridview1_RowDeleting" onrowediting="Gridview1_RowEditing"
            onrowupdating="Gridview1_RowUpdating" AllowPaging="True"
            onpageindexchanging="Gridview1_PageIndexChanging"
            onselectedindexchanging="Gridview1_SelectedIndexChanging" PageSize="2">
        <Columns>
            <asp:TemplateField HeaderText="编号">
            <EditItemTemplate>
                   
                    <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("messageid") %>' />
                </EditItemTemplate>
                <ItemTemplate>
                    <%#Eval("messageid") %>
                    <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("messageid") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="标题">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("mtitle") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <%#Eval("mtitle") %>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="留言内容">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("mcontent") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <%#Eval("mcontent") %>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="留言时间">
                <EditItemTemplate>
                 <%-- <asp:TextBox ID="TextBox3" runat="server" Text='<%#Eval("mtime") %>'></asp:TextBox>--%>
                </EditItemTemplate>
                <ItemTemplate>
                    <%#Eval("mtime") %>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField HeaderText="编辑" ShowEditButton="True" />
            <asp:CommandField HeaderText="删除" ShowDeleteButton="True" />
        </Columns>
        </asp:gridview>
    </div>
    </form>
</body>
</html>
  下面是GridView控件的编辑和删除代码:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            MyBind();
        }
    }
  
    public void MyBind()
        {
            Message mess = new Message();
            OpMessage op = new OpMessage();
            DataTable dt = op.Select();
            Gridview1.DataSource = dt;
            Gridview1.DataBind();
        }
    protected void Gridview1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        Gridview1.EditIndex = e.NewEditIndex;
        MyBind();
    }
    protected void Gridview1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        TextBox t1 = Gridview1.Rows[e.RowIndex].FindControl("Textbox1") as TextBox;
        TextBox t2 = Gridview1.Rows[e.RowIndex].FindControl("Textbox2") as TextBox;
        //TextBox t3 = Gridview1.Rows[e.RowIndex].FindControl("Textbox3") as TextBox;
        HiddenField h1 = Gridview1.Rows[e.RowIndex].FindControl("HiddenField1") as HiddenField;
        Message me = new Message();
        OpMessage opm = new OpMessage();
        me.Title = t1.Text;
        me.Content = t2.Text;
        me.Time = DateTime.Now;
        opm.GetData(me);
        opm.Update(int.Parse(h1.Value));
        Gridview1.EditIndex = -1;
        MyBind();
      
    }
    protected void Gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
       
        OpMessage opm = new OpMessage();
        HiddenField h1 = Gridview1.Rows[e.RowIndex].FindControl("HiddenField1") as HiddenField;
        opm.Delete(int.Parse(h1.Value));
        MyBind();
    }
    protected void Gridview1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        Gridview1.EditIndex = -1;
        MyBind();
    }
    protected void Gridview1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    {
        Gridview1.PageIndex = e.NewSelectedIndex;
        //Gridview1.DataBind();
        MyBind();
    }
    protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        Gridview1.PageIndex = e.NewPageIndex;
        //Gridview1.DataBind();
        MyBind();
    }

(2) Datalist控件:
DataList控件支持的模板类型
     模板属性  说明
ItemTemplate  可包含一些HTML元素和控件,将为数据源中的每一行呈现一次这些HTML元素和控件。
AlternatingItemTemplate  可包含一些HTML元素和控件,将为数据源中的每两行呈现一次这些 HTML元素和控件。通常,开发人员可以使用此模板来为交替行创建不同的外观,例如指定一个与在ItemTemplate属性中指定的颜色不同的背景色。
SelectedItemTemplate  可包含一些元素,当用户选择DataList控件中的某一项时将呈现这些元素。通常,开发人员可以使用此模板来通过不同的背景色或字体颜色直观地区分选定的行。还可以通过显示数据源中的其他字段来展开该项。
EditItemTemplate  指定当某项处于编辑模式中时的布局。此模板通常包含一些编辑控件,如TextBox控件。
HeaderTemplate 和FooterTemplate 包含在列表的开始和结束处分别呈现的文本和控件。
SeparatorTemplate 包含在每项之间呈现的元素。典型的示例可能是一条直线(使用HR元素)。

响应列表项中的按钮单击而引发。这些事件旨在帮助开发人员响应DataList控件的最常用功能。支持该类型的四个事件:
 ? EditCommand
 ? DeleteCommand
 ? UpdateCommand
 ? CancelCommand
若要引发这些事件,可将Button、LinkButton或ImageButton控件添加到DataList控件中的模板中,并将这些按钮的CommandName属性设置为某个关键字,如edit、delete、update或cancel。当用户单击项中的某个按钮时,就会向该按钮的容器(DataList控件)发送事件。按钮具体引发哪个事件将取决于所单击按钮的CommandName属性的值。例如,如果某个按钮的CommandName属性设置为edit,则单击该按钮时将引发EditCommand事件。如果CommandName属性设置为delete,则单击该按钮将引发DeleteCommand事件,依此类推。
aspx页面代码:
<form id="form1" runat="server">
    <div>
   
    <asp:DataList ID="DataList1" runat="server" RepeatColumns="2"
            oncancelcommand="DataList1_CancelCommand" oneditcommand="DataList1_EditCommand"
            onitemcommand="DataList1_ItemCommand"
            onupdatecommand="DataList1_UpdateCommand"
            ondeletecommand="DataList1_DeleteCommand">
        <ItemTemplate>
        <table><tr><td><%#Eval("mtitle") %>
            <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("messageid") %>'></asp:HiddenField>
            <asp:Button ID="Button2" runat="server" Text="编辑" CommandName="edit" />
            <asp:Button ID="Button4" runat="server" Text="删除" CommandName="delete" />
            </td></tr>
            <td><%#Eval("mcontent") %></td>
            <td><%#Eval("mtime") %></td>
        </table>
           
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("mtitle") %>'></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("mcontent") %>'></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="更新"  CommandName="update" CommandArgument=""/>
            <asp:Button ID="Button3" runat="server" Text="取消"  CommandName="cancel"/>
        <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("messageid") %>'>
        </asp:HiddenField>
        </EditItemTemplate>
        <SelectedItemTemplate>
           
          
       
        </SelectedItemTemplate>
    </asp:DataList>
    </div>
    </form>
(3)Repeater控件:
Repeater服务器控件类似于DataList服务器控件,通过创建模板为Repeater服务器控件提供布局。
如果未定义模板,或者如果模板都不包含元素,则该控件不会显示在页面上。
Repeater服务器控件能够支持的模板有ItemTemplate、AlternatingItemTemplate、HeaderTemplate、FooterTemplate、SeparatorTemplate。
Repeater控件的使用类似于DataList控件。Repeater控件由于布局由自己定义 所以一般会在网站的前台使用。而GridView控件则方便数据库的管理,用于后台数据的呈现常在后台页面使用。
(4)DetailsView控件:
DetailsView控件一次呈现一条表格形式的记录,并提供翻阅多条记录以及插入、更新、和删除记录的功能。它常用在主/详细信息方案中。如主控件GridView
(5)FormView控件:
FormView控件与DetailsView控件类似,它一次呈现数据源中的一条记录,并并提供翻阅多条记录以及插入、更新、和删除记录的功能。这两个控件都不常用。

原创粉丝点击