详细信息视图中的下拉列表过滤器

时间:2013-04-15 19:08:04

标签: asp.net vb.net entitydatasource

我在插入项目模板视图中有一个下拉列表(非常长,超过100个项目),以获取详细信息视图。我想添加一个文本框和按钮(搜索功能),以便我可以过滤此列表,但我收到以下错误。

  

数据绑定方法,如Eval(),XPath()和Bind()只能是   在数据绑定控件的上下文中使用。

我创建了两个实体数据源,一个带有where子句,另一个没有。当我点击搜索时,后面的代码(按钮单击事件)将数据源切换到具有where子句和参数的数据源,但我得到上面的错误。关于如何做到这一点的任何建议?

Dim aa As DropDownList = DetailsView1.FindControl("DropDownList1")
 aa.DataSourceID = ""
 aa.DataSource = EmpPersonalInfoLOV1   
 aa.DataBind()

EDITED  将aa.DataSource从字符串更改为EmpPersonalInfoLOV1(数据源的名称)

编辑#2 用户要求的更多信息..

数据源#1代码

<asp:EntityDataSource ID="EmpPersonalInfoLOV" runat="server" 
                    ConnectionString="name=sspEntities" DefaultContainerName="sspEntities" 
                    EnableFlattening="False" EntitySetName="Employee_Personal_Info" 
                    EntityTypeFilter="" 
                    Select="it.[Emp_id], it.[Employee_No_FastPay], it.[Surname] + ' '+ it.[Firstname] As FullName" 
                    Where="">
                </asp:EntityDataSource> 

数据源#2代码

<asp:EntityDataSource ID="EmpPersonalInfoLOV1" runat="server" 
                    ConnectionString="name=sspEntities" DefaultContainerName="sspEntities" 
                    EnableFlattening="False" EntitySetName="Employee_Personal_Info" 
                    Select="it.[Emp_id], it.[Employee_No_FastPay], it.[Surname] + ' '+ it.[Firstname] As FullName" 
                    Where="it.Surname like '%' + @Name + '%'">
                    <WhereParameters>
                        <asp:ControlParameter ControlID="TxtBx1" DbType="String" 
                            DefaultValue="&quot;&quot;" Name="Name"  PropertyName="SelectedValue" />
                    </WhereParameters>
                </asp:EntityDataSource>

1 个答案:

答案 0 :(得分:0)

您似乎没有在PropertyName上使用正确的EntityDataSource。由于您从文本框中获取值,因此您获得的属性是Text。试试这个:

<asp:EntityDataSource ID="EmpPersonalInfoLOV1" runat="server" 
                ConnectionString="name=sspEntities" DefaultContainerName="sspEntities" 
                EnableFlattening="False" EntitySetName="Employee_Personal_Info" 
                Select="it.[Emp_id], it.[Employee_No_FastPay], it.[Surname] + ' '+ it.[Firstname] As FullName" 
                Where="it.Surname like '%' + @Name + '%'">
                <WhereParameters>
                    <asp:ControlParameter ControlID="TxtBx1" DbType="String" Type="String" DefaultValue="" Name="Name" PropertyName="Text" />
                </WhereParameters>
</asp:EntityDataSource>

此外,当您在where子句中使用like时,实际上不需要两个数据对象。当文本框为空时,查询将选择全部。