none
GridView如何嵌套使用验证控件 RRS feed

  • 问题

  •     SQL数据库中LeaseDateToR、LeaseDateFormR等为Date类型,我将它们用在GridView中,并转换为模板。我想给这些Date类型的模板列加上日期类型验证的控件。这些控件在输入表达式正确时不显示,当输入不正确时就 显示出来。我只使用过最简单方法的验证控件,还未在GridView中嵌套使用验证控件,不知道该如何入手,才能让GridView即美观又能验证!?

    请各位大大帮忙看看。谢谢!


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月16日 3:18

答案

  • 你可以在GridView控制項上按SmartTag之後選擇EditTemplates,再選擇EditItem Template。

    接著就可以從ToolBox拖曳驗證控制項到EditItem Template了,其他設定與之前使用驗證控制項都一樣。

    設定好的aspx如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="Demo.WebForm3" %>
    
    <!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:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="RegionID" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="RegionID" HeaderText="RegionID" ReadOnly="True" 
                        SortExpression="RegionID" />
                    <asp:TemplateField HeaderText="RegionDescription" 
                        SortExpression="RegionDescription">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" 
                                Text='<%# Bind("RegionDescription") %>'></asp:TextBox>
                            <asp:CompareValidator ID="CompareValidator1" runat="server" 
                                ControlToValidate="TextBox1" ErrorMessage="CompareValidator" 
                                Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("RegionDescription") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
                SelectCommand="SELECT * FROM [Region]"></asp:SqlDataSource>
            <br />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        </div>
        </form>
    </body>
    </html>
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月16日 3:54
  • 是的,做法都一樣。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月16日 7:38

全部回复

  • 你可以在GridView控制項上按SmartTag之後選擇EditTemplates,再選擇EditItem Template。

    接著就可以從ToolBox拖曳驗證控制項到EditItem Template了,其他設定與之前使用驗證控制項都一樣。

    設定好的aspx如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="Demo.WebForm3" %>
    
    <!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:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="RegionID" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="RegionID" HeaderText="RegionID" ReadOnly="True" 
                        SortExpression="RegionID" />
                    <asp:TemplateField HeaderText="RegionDescription" 
                        SortExpression="RegionDescription">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" 
                                Text='<%# Bind("RegionDescription") %>'></asp:TextBox>
                            <asp:CompareValidator ID="CompareValidator1" runat="server" 
                                ControlToValidate="TextBox1" ErrorMessage="CompareValidator" 
                                Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("RegionDescription") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
                SelectCommand="SELECT * FROM [Region]"></asp:SqlDataSource>
            <br />
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
        </div>
        </form>
    </body>
    </html>
    


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月16日 3:54
  • 谢谢您的解答!  我的情况和您说的略有不同!

    我的EideItemTemPlate 中没有控件,只有ItemTemplate中有TextBox控件,是否也是同样操作呢?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月16日 7:35
  • 是的,做法都一樣。

    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年4月16日 7:38