Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法动态更改SelectCommand内容_Asp.net_Vb.net_Dynamic_Sqldatasource_Selectcommand - Fatal编程技术网

Asp.net 无法动态更改SelectCommand内容

Asp.net 无法动态更改SelectCommand内容,asp.net,vb.net,dynamic,sqldatasource,selectcommand,Asp.net,Vb.net,Dynamic,Sqldatasource,Selectcommand,我在尝试动态更改SelectCommand内容时遇到问题 有一个Telerik searchbox控件,它使用SQLDataSource不断地用select查询敲打数据库,并显示通过键入过滤的单词列表。然后,如果您从列表中选择一个条目,它将成为“令牌”,然后您可以再次开始键入 在我的情况下,查询应返回汽车品牌列表,初始查询为: 选择不同的mfrname 来自制造商 其中mfrname不为NULL 按mfrname订购 因此,如果我输入“Che”,它将显示“Checker”和“Chevrolet

我在尝试动态更改SelectCommand内容时遇到问题

有一个Telerik searchbox控件,它使用SQLDataSource不断地用select查询敲打数据库,并显示通过键入过滤的单词列表。然后,如果您从列表中选择一个条目,它将成为“令牌”,然后您可以再次开始键入

在我的情况下,查询应返回汽车品牌列表,初始查询为:

选择不同的mfrname
来自制造商
其中mfrname不为NULL
按mfrname订购
因此,如果我输入“Che”,它将显示“Checker”和“Chevrolet”。所以,如果我点击“雪佛兰”,它将成为一个令牌,我的输入被重置,这样我就可以再次开始输入

出于测试目的,在生成令牌后,我将查询更改为:

选择不同的mfrname
来自制造商
其中mfrname不为NULL,mfrname类似于'm%'
按mfrname订购
请注意,现在它应该只选择以“M”开头的汽车,如“梅赛德斯”、“玛莎拉蒂”等,因此,如果我键入任何其他不以“M”开头的内容,则不应显示任何内容

但是,如果我在那里输入“Che”,它将再次显示为“Checker”和“Chevrolet”,表明它仍在使用初始查询,而不是新查询

好的,我知道事件正在被触发,SelectCommand值正在被更改(我知道这一点,因为我添加了一个标签,可以更改并显示新值)。我不知道为什么控件坚持使用旧查询而不是新查询!有什么想法吗

我的代码前端:



正在等待更新。。。
我的代码隐藏:

protectedsub-RadAutoCompleteBox1\u EntryAdded(发送方作为对象,e作为Telerik.Web.UI.autocompleteentryventargs)
SqlDataSource1.SelectCommand=“从制造商中选择不同的mfrname,其中mfrname不为NULL,mfrname类似于“m%”按mfrname排序”
RadAutoCompleteBox1.DataBind()文件
添加了label1.Text=e.Entry.Text+(“+SqlDataSource1.SelectCommand+”)
端接头

我找到了解决方案。嗯,更像是一个工作环境,但它是有效的

在我的例子中,我不需要完全更改查询,实际上只需要WHERE子句。因此,我在查询文本中添加了一个动态参数,并将其绑定到另一个控件(一个不可见的标签),强制AutoCompleteBox在运行查询之前始终查看标签的内容

这样,更改标签的内容将更改我的WHERE子句中使用的参数,因此我可以控制查询。可以通过简单地向SQLDataSource添加更多参数并向页面添加其他不可见控件来扩展它

所以这里是实现的解决方案,因为它可能对其他人有帮助

代码前端:


%
代码隐藏:

protectedsub-RadAutoCompleteBox1\u EntryAdded(发送方作为对象,e作为Telerik.Web.UI.autocompleteentryventargs)
'用例结构,以根据需要更改参数
lblSQLpar.Text=“m%”
端接头

尝试清理和重建项目。隐藏表单字段而不是标签可能会更好,但这是一个很好的解决方案。