1

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

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

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

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

已编辑 将 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>
4

1 回答 1

0

看起来您没有PropertyNameEntityDataSource. 由于您从文本框中获取值,因此您获得的属性是文本。尝试这个:

<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 时,您实际上不需要两个数据对象。当文本框为空时,查询将全选。

于 2013-04-15T19:43:10.613 回答