GridView中的“EmptyDataText”标记只有在未找到数据时才会显示

时间:2009-10-22 14:32:09

标签: gridview emptydatatext

我有以下Gridview(可以工作)和一个'EmptyDataText'标记,如果在单击提交按钮后无法从数据库中找到数据,则应在屏幕上显示消息。问题是,页面打开时页面上会显示“找不到数据”消息,但我希望仅当用户输入无法在数据库中找到的电子邮件地址时才显示该消息。我希望我解释正确,我不能以更好的方式说出这个问题,请求帮助!

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"
                DataSourceID="SqlDataSource" EmptyDataText="The data could not be found" CellSpacing="3" CellPadding="4"
                GridLines="None" ForeColor="#333333">
                <Columns>
                    <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
                        SortExpression="ID">
                        <ItemStyle Font-Names="Verdana" Font-Size="9pt" />
                        <HeaderStyle Font-Names="Verdana" Font-Size="10pt" />
                    </asp:BoundField>
                    <asp:BoundField DataField="name" HeaderText="Name" SortExpression="name">
                        <ItemStyle Font-Names="Verdana" Font-Size="9pt" />
                        <HeaderStyle Font-Names="Verdana" Font-Size="10pt" />
                    </asp:BoundField>
                    <asp:BoundField DataField="EmailAddress" HeaderText="Email Address" SortExpression="EmailAddress">
                        <ItemStyle Font-Names="Verdana" Font-Size="9pt" />
                        <HeaderStyle Font-Names="Verdana" Font-Size="10pt" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Address1" HeaderText="Address1" SortExpression="Address1">
                        <ItemStyle Font-Names="Verdana" Font-Size="9pt" />
                        <HeaderStyle Font-Names="Verdana" Font-Size="10pt" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Address2" HeaderText="Address2" SortExpression="Address2">
                        <ItemStyle Font-Names="Verdana" Font-Size="9pt" />
                        <HeaderStyle Font-Names="Verdana" Font-Size="10pt" />
                    </asp:BoundField>
                    <asp:BoundField DataField="city" HeaderText="City" SortExpression="city">
                        <ItemStyle Font-Names="Verdana" Font-Size="9pt" />
                        <HeaderStyle Font-Names="Verdana" Font-Size="10pt" />
                    </asp:BoundField>
                    <asp:BoundField DataField="PostCode" HeaderText="Post Code" SortExpression="PostCode">
                        <ItemStyle Font-Names="Verdana" Font-Size="9pt" />
                        <HeaderStyle Font-Names="Verdana" Font-Size="10pt" />
                    </asp:BoundField>
                </Columns>

                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
                <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                <EditRowStyle BackColor="#999999" />
            </asp:GridView>

这可能很简单,可能与页面刷新的方式有关?或者它可能很难...... 我只是不希望消息显示在屏幕上,即使是因为用户已经输入了任何信息。

感谢。


我想将中心(在gridview中)与EmptyDataText =“no info”标记对齐,而不是在页面的默认左侧。

4 个答案:

答案 0 :(得分:0)

您要求用户输入电子邮件地址?你可以删除emptydatatext并使用emptyDatatemplate。

<EmptyDataTemplate>
   <table border="1px" cellpadding="1px" cellspacing="1" width='100%'>
            <tr><td>...   </td> </tr>
   </table>
</EmptyDataTemplate>

答案 1 :(得分:0)

文字输入部分是:

<form id="form1" runat="server">
        <div>
            <div style="margin-bottom: 15px">
                <strong><span style="font-family: Verdana"><span style="font-size: 10pt">Enter email
                    address:</span></span></strong></div>
            <div style="margin-bottom: 15px">
                <asp:TextBox ID="txtBox" runat="server" Width="210px" TabIndex="1" MaxLength="50"></asp:TextBox></div>
            <asp:Button ID="btn" runat="server" Text="Submit" OnClick="btn_Click" Width="93px" />
            <div style="margin-top: 15px">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtBox"
                    Text="Please enter a valid email address" runat="server" Font-Bold="False" Font-Names="Verdana"
                    Font-Size="10pt" />
            </div>
            <div style="margin-top: 30px; margin-bottom: 15px">
            </div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"
                DataSourceID="SqlDataSource" EmptyDataText="wrong data" CellSpacing="3" CellPadding="4"
                GridLines="None" ForeColor="#333333">

答案 2 :(得分:0)

如果你有

                  

当您从浏览器查看来源时,您将获得

<div>
    <table cellspacing="0" rules="all" border="1" id="GridView1" style="border-collapse:collapse;">
        <tr class="mytextcenter">
            <td>The data could not be found</td>
        </tr>
    </table>
</div>

您可以轻松找出需要指定的CSS。

答案 3 :(得分:0)

这样做,你可以选择CSS l在中心设置文字......

<EmptyDataTemplate>
             <asp:Label ID="Label1" runat="server" Text="No Data Found" 
   Font-Bold="True" Font-Size="X-Large" ForeColor="#FF0066" 
                       style="position:absolute;left:400px"></asp:Label>
</EmptyDataTemplate>