8.5 数据绑定控件(FormView)

  FormView控件只能显示数据库中一行的数据,并且提供对数据的分页操作,FormView控件可以以一种不规则的外观来将数据呈现给用户。FormView控件同样支持模板,以方便开发人员自定义FormView控件的UI,FormView控件支持的模板如下所示:
1)ItemTemplate:用于在FormView种呈现一个特殊的记录。
2)HeaderTemplate:用于指定一个可选的页眉行。
3)FooterTemplate:用于指定一个可选的页脚行。
4)EmptyDataTemplate:当FormView的DataSource缺少记录的时候,EmptyDataTemplate将会代替ItemTemplate来生成控件的标记语言。
5)PagerTemplate:如果FormView启用了分页的话,这个模板可以用于自定义分页的界面。
6)EditItemTemplate / InsertItemTemplate:如果FormView支持编辑或插入功能,那么这两种模板可以用于自定义相关的界面。
  通过编辑ItmTemplate,能够自定义HTML以呈现数据,这种情况很像Repeater控件。FormView控件同样支持自动套用格式,选择【自动套用格式】选项就能够为FormView控件选择默认格式,选择后如图8-42所示。
自定义FormView控件
图8-42 自定义FormView控件
  当FormView控件界面编写完成后,HTML代码如下所示。
+展开
-HTML
    <asp:FormView ID="FormView1" runat="server" AllowPaging="True" 
     BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" 
     CellPadding="4" DataKeyNames="ID" DataSourceID="SqlDataSource1" 
     GridLines="Both" Width="100%">

        <FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
            <RowStyle BackColor="White" ForeColor="#003399" />
                <EditItemTemplate>
                    ID:
                      <asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID"%>' /><br >
                    TITLE:
                      <asp:TextBox ID="TITLETextBox" runat="server" Text='<%# Bind("TITLE"%>' /><br >
                      <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
                      CommandName="Update" Text="更新" />

                      <asp:LinkButton ID="UpdateCancelButton" runat="server" 
                      CausesValidation="False" CommandName="Cancel" Text="取消" />

                </EditItemTemplate>
                <InsertItemTemplate>
                    TITLE:
                      <asp:TextBox ID="TITLETextBox" runat="server" Text='<%# Bind("TITLE"%>' /> <br >
                      <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
                      CommandName="Insert" Text="插入" />

                      <asp:LinkButton ID="InsertCancelButton" runat="server" 
                      CausesValidation="False" CommandName="Cancel" Text="取消" />

                </InsertItemTemplate>
                <ItemTemplate>
                    新闻编号:
                      <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID"%>' /><br >
                    新闻标题:
                    <asp:Label ID="TITLELabel" runat="server" Text='<%# Bind("TITLE"%>' /><br >
                </ItemTemplate>
        <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
        <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
        <EditRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
    </asp:FormView>

  上述代码创建了FormView控件,并为FormView控件自定义了若干模板。刚才只是编写了ItemTemplate模板,但是EdititemTemplate也已经在HTML标签中生成。
注意:FormView控件模板中的相应数据字段也是通过数据绑定语法实现的,如<%# Eval("字段名称") %>。
  FormView控件同样支持对当前数据的更新、删除、选择等操作。当拖放一个按钮控件时,可以选择DataBindings来为按钮控件的属性做相应的配置,如图8-43所示。
DataBindings
图8-43 DataBindings
  当单击FormView中的控件时,会触发Command事件,要使用FormView控件进行更新等操作,必须在相应的模式下更新才行,例如当需要更新操作时,则必须在编辑模式下才能进行更新操作。当执行相应的操作时,例如更新操作,则必须在编辑模式下进行操作,并需要使用ItemUpdated事件来编写相应的更新事件。编写FormView控件中的ItemTemplate和EditItemTemplate,生成的HTML代码如下所示。
+展开
-HTML
    <asp:FormView ID="FormView1" runat="server" AllowPaging="True" 
        BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" 
        CellPadding="4" DataKeyNames="ID" DataSourceID="SqlDataSource1" 
        GridLines="Both" Width="100%" onitemcommand="FormView1_ItemCommand" 
        onitemupdated="FormView1_ItemUpdated">

            <FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
            <RowStyle BackColor="White" ForeColor="#003399" />
            <EditItemTemplate>
                新闻编号:
                <asp:Label ID="IDLabel1" runat="server" Text='<%# Eval("ID"%>' />
                <br >
                新闻标题:
                <asp:TextBox ID="TITLETextBox" runat="server" Text='<%# Bind("TITLE"%>' />
                <br >
                <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
                    CommandName="Update" Text="更新" />

                &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
                    CausesValidation="False" CommandName="Cancel" Text="取消" />

            </EditItemTemplate>
            <InsertItemTemplate>
                TITLE:
                <asp:TextBox ID="TITLETextBox" runat="server" Text='<%# Bind("TITLE"%>' />
                <br >
                <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
                    CommandName="Insert" Text="插入" />

                    <asp:LinkButton ID="InsertCancelButton" runat="server" 
                    CausesValidation="False" CommandName="Cancel" Text="取消" />

            </InsertItemTemplate>
            <ItemTemplate>
                新闻编号:
                    <asp:Label ID="IDLabel" runat="server" Text='<%# Eval("ID"%>' /><br >
                新闻标题:
                    <asp:Label ID="TITLELabel" runat="server" Text='<%# Bind("TITLE"%>' /><br >
            </ItemTemplate>
        <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
        <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
        <EditRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
    </asp:FormView>

  上述代码编写了FormView控件中的ItemTemplate和EditItemTemplate。在页面中,增加了按钮来切换FormView控件的编辑模式,按钮控件代码如下所示。
+展开
-HTML
        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Edit" />

当单击按钮时,FormView控件会更改其编辑模式,示例代码如下所示。
+展开
-C#
        protected void Button2_Click(object sender, EventArgs e)
        {
            FormView1.ChangeMode(FormViewMode.Edit);//更改编辑模式
        }

  当更改了编辑模式后,FormView控件允许在当前页面直接更改数据的值,并通过ItemUpdated进行更新,示例代码如下所示。
+展开
-C#
        protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
        {
            Label1.Text = "相应值被更新"; //提示已被更改
            FormView1.ChangeMode(FormViewMode.ReadOnly);//更改编辑模式
        }

  上述代码允许开发人员能够自定义数据操作,通过对象e的值来获取相应的数据字段的值并进行更新,运行结果如图8-44和8-45所示。
视图模式
图8-44 视图模式
编辑模式
图8-45 编辑模式
  当单击了其中的更新,则会触发ItemUpdated事件,开发人员能够通过编写ItemUpdated事件来进行相应的更新操作。值得注意的是,通常情况下数据源控件必须支持更新操作才能够执行更新,在配置数据源时,需要为更新语句进行配置。在配置和生成SQL语句中必须选择【高级】选项、勾选【生成update、insert、delete语句】复选框才能够让数据源控件支持更新等操作,如图8-46所示。
高级数据源配置
图8-46 高级数据源配置
  如果数据绑定控件需要使用Insert等语句时,则数据源控件需配置高级SQL生成选项,开发人员还能够在数据源控件的HTML代码中进行相应的SQL语句的更改已达到自定义数据源控件的目的。

加支付宝好友偷能量挖...


评论(1)网络
阅读(165)喜欢(0)Asp.Net/C#/WCF