首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlDataSource动态设置SelectCommand

SqlDataSource动态设置SelectCommand
EN

Stack Overflow用户
提问于 2009-07-28 10:32:54
回答 2查看 2.7K关注 0票数 0

我使用的是SqlDataSource,为了避免直接在代码中编写冗长的查询,我想我可以创建一个Query类,将我想要的查询作为字符串返回。我尝试了下面的代码,但得到的结果是“服务器标签不能包含<% ... %>构造”。

之前我正在使用存储过程,但是我的虚拟主机不允许这样做,所以我就开始考虑Query类的解决方案了。我还需要补充的是,我不想在代码背后进行数据绑定。

有没有办法做到这一点?

代码语言:javascript
复制
    <asp:SqlDataSource ID="DS" 
        runat="server"
        DataSourceMode="DataSet"  
        ConnectionString="<%$ ConnectionStrings:conn %>"
        ProviderName="MySql.Data.MySqlClient"
        SelectCommand="<% Query.getTestQuery() %>"
        >
    </asp:SqlDataSource>
EN

回答 2

Stack Overflow用户

发布于 2009-12-30 04:43:06

在ASP.NET中不可能做到这一点。<% %>标记中的代码是用来运行任意代码的,而不是用来设置属性值的。<%= %>标记中的代码用于呈现到输出流。<%# %>中的代码用于数据绑定,这与您试图实现的目标类似,但不同。<%$ %>中的代码用于表达式绑定,但它们在页面生命周期中执行得太早,因此不太可能在您的场景中工作。

在这里使用ObjectDataSource是一种方法,因为在这一点上它只是代码,并且您的代码可以根据页面的状态做任何它想做的事情。

使用派生的SqlDataSource是另一种选择。创建从SqlDataSource派生的控件并重写其OnInit方法。在OnInit方法中,您可以根据页面的状态动态地设置SelectCommand以执行任何您想要的操作。

票数 1
EN

Stack Overflow用户

发布于 2009-07-28 10:49:59

也许可以使用ObjectDataSource。这样,在您的对象中,您将能够在那里进行动态查询。

否则,您可以在代码隐藏中的SqlDataSource选择事件期间修改SelectCommand。然后,您可以将SelectCommand更改为您喜欢的任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1193256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档