我正在学习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会消失?
非常感谢
答案 0 :(得分:1)
那是因为你没有传递默认值。只需在ControlParameter中添加DefaultValue
属性: -
<asp:ControlParameter ControlID="txtSearch" DefaultValue="%%"
Name="Genre" PropertyName="Text" Type="String" />
在这里,由于您有%%
运营商,我正在传递Like
。因此,默认情况下,当页面首次加载并且textbox的值为空时,控制参数将传递此默认值,该值将获取所有记录。