为什么我的网格视图在我放置搜索功能,选择,插入,删除,插入gridview后消失了

时间:2015-10-30 19:28:06

标签: c# asp.net .net gridview

我正在学习Gridview .net和C#

我可以编辑,删除和插入。

我添加了搜索功能,搜索功能正常工作但是当页面打开时,我没有在页面上看到gridview,而只看到了搜索和按钮的文本框。在我输入一些后,搜索功能完全正常。

我想在页面打开时看到gridview,再加上搜索框

<asp:TextBox ID="txtSearch" runat="server" CssClass="txt"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="buttongr" />


<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:FleetManagementConnectionString %>"
    DeleteCommand="DELETE FROM [Genres] WHERE [GenreID] = @GenreID"
    InsertCommand="INSERT INTO [Genres] ([Genre]) VALUES (@Genre)"
    SelectCommand="SELECT * FROM [Genres] WHERE ([Genre] LIKE '%' + @Genre + '%')"
    UpdateCommand="UPDATE [Genres] SET [Genre] = @Genre WHERE [GenreID] = @GenreID">
    <DeleteParameters>
        <asp:Parameter Name="GenreID" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="Genre" Type="String" />
    </InsertParameters>
    <UpdateParameters>
        <asp:Parameter Name="Genre" Type="String" />
        <asp:Parameter Name="GenreID" Type="Int32" />
    </UpdateParameters>

    <SelectParameters>
        <asp:ControlParameter ControlID="txtSearch" Name="Genre" PropertyName="Text" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" DataKeyNames="GenreID" DataSourceID="SqlDataSource1" ShowFooter="True" Visible ="true"  >
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />

        <asp:TemplateField HeaderText="GenreID" InsertVisible="False" SortExpression="GenreID">
            <EditItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("GenreID") %>'></asp:Label>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("GenreID") %>'></asp:Label>
            </ItemTemplate>
            <FooterTemplate>
                <asp:LinkButton ValidationGroup="Insert" OnClick="LbInsert_Click" runat="server">Insert</asp:LinkButton>
            </FooterTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText="Genre" SortExpression="Genre">

            <EditItemTemplate>
                <asp:TextBox ID="txtGenre" runat="server" Text='<%# Bind("Genre") %>'></asp:TextBox>
                <asp:RequiredFieldValidator ValidationGroup="Insert" ID="rfvGenre" runat="server" ErrorMessage="Required"
                    ControlToValidate="Textbox1" Text="*" ForeColor="Red">
                </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("Genre") %>'></asp:Label>
            </ItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
            </FooterTemplate>

        </asp:TemplateField>
    </Columns>

    <FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
    <HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
    <PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
    <RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
    <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
    <SortedAscendingCellStyle BackColor="#FFF1D4" />
    <SortedAscendingHeaderStyle BackColor="#B95C30" />
    <SortedDescendingCellStyle BackColor="#F1E5CE" />
    <SortedDescendingHeaderStyle BackColor="#93451F" />
</asp:GridView>



<asp:ValidationSummary ValidationGroup="Insert" ID="ValidationSummary1" ForeColor="red" runat="server" />

我只是添加此代码

SelectCommand="SELECT * FROM [Genres] WHERE ([Genre] LIKE '%' + @Genre + '%')"
 <SelectParameters>
                        <asp:ControlParameter ControlID="txtSearch" Name="Genre" PropertyName="Text" Type="String" />
                    </SelectParameters>

为什么我的GridView会消失?

非常感谢

1 个答案:

答案 0 :(得分:1)

那是因为你没有传递默认值。只需在ControlParameter中添加DefaultValue属性: -

<asp:ControlParameter ControlID="txtSearch" DefaultValue="%%" 
      Name="Genre" PropertyName="Text" Type="String" />

在这里,由于您有%%运营商,我正在传递Like。因此,默认情况下,当页面首次加载并且textbox的值为空时,控制参数将传递此默认值,该值将获取所有记录。