我正在使用EntityDataSource控件在网格中显示数据,我想使用相同的EntityDataSource来显示所有数据以及每个搜索,问题是我只能做一件事,要么使用它进行搜索,要么获取整个数据
这是我的.aspx页面
<asp:EntityDataSource ID="InvestorsSource" runat="server"
ConnectionString="name=Entities"
DefaultContainerName="Entities" EnableFlattening="False"
EntitySetName="Investors" EntityTypeFilter="Investor"
Select="it.[InvestorId], it.[InvestorName], it.[Summary], it.[Logo], it.[EmailAddress], it.[PhoneNumber], it.[Website]"
AutoGenerateWhereClause="True" OrderBy="it.[InvestorName]">
<WhereParameters>
<asp:FormParameter FormField="txtSearchInvestor" Name="investorName" Type="String" />
</WhereParameters>
</asp:EntityDataSource>
<asp:TextBox ID="txtSearchInvestor" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Go" onclick="Button1_Click" />
<p>
<asp:GridView ID="gvInvestors" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False"
DataSourceID="InvestorsSource">
<Columns>
<asp:BoundField DataField="InvestorId" HeaderText="InvestorId" ReadOnly="True"
SortExpression="InvestorId" />
<asp:BoundField DataField="InvestorName" HeaderText="InvestorName"
SortExpression="InvestorName" ReadOnly="True" />
<asp:BoundField DataField="Summary" HeaderText="Summary"
SortExpression="Summary" ReadOnly="True" />
<asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress"
SortExpression="EmailAddress" ReadOnly="True" />
<asp:BoundField DataField="PhoneNumber" HeaderText="PhoneNumber"
SortExpression="PhoneNumber" ReadOnly="True" />
<asp:BoundField DataField="Website" HeaderText="Website"
SortExpression="Website" ReadOnly="True" />
</Columns>
</asp:GridView>
</p>谢谢
发布于 2010-08-04 01:17:15
我使用Northwind DB和Employees表设置了一个页面。有一个TextBox控件和一个按钮控件,就像你的代码一样用来过滤数据。当TextBox为空时,将显示所有记录。在TextBox中输入EmployeeID并单击“Filter”按钮时,将只显示具有该EmployeeID的员工(如果数据中存在该员工)。我认为这就是你所要求的那种行为。下面是标记:
<form id="form1" runat="server">
<div>
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=NWEntities" DefaultContainerName="NWEntities"
EntitySetName="EmployeeSet" EntityTypeFilter="Employee" AutoGenerateWhereClause="true"
Select="it.[EmployeeID], it.[LastName], it.[FirstName], it.[Title], it.[TitleOfCourtesy], it.[BirthDate]">
<WhereParameters>
<asp:FormParameter FormField="txtFilter" Name="EmployeeID" Type="Int32" />
</WhereParameters>
</asp:EntityDataSource>
<asp:TextBox ID="txtFilter" runat="server" />
<asp:Button runat="server" Text="Filter" />
<asp:GridView ID="gvEmployees" runat="server" DataSourceID="EntityDataSource1" AutoGenerateColumns="true" />
</div>
</form>编辑:提出的问题是如何将值的一部分输入到筛选器文本框中,以获取以输入值开头的所有值。您可以使用LIKE SQL操作符,并且需要告诉用户"%“字符是通配符。我将筛选器更改为FirstName字段。以下是对上述代码的更改:
在EntityDataSource标记中:
AutoGenerateWhereClause="false"
Where="it.[FirstName] LIKE @FirstName"在WhereParameters标记中:
<asp:FormParameter FormField="txtFilter" Name="FirstName" Type="String" DefaultValue="%" />现在,当在过滤器文本框中输入"n%“时,将显示FirstName值以"n”开头的所有记录。现在可以使用任何有效的LIKE子句。
https://stackoverflow.com/questions/3398464
复制相似问题