我在插入项目模板视图中有一个下拉列表(非常长,超过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="""" Name="Name" PropertyName="SelectedValue" />
</WhereParameters>
</asp:EntityDataSource>
答案 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时,实际上不需要两个数据对象。当文本框为空时,查询将选择全部。