【问题标题】:SqlDataSource set SelectCommand dynamicallySqlDataSource 动态设置 SelectCommand
【发布时间】:2010-11-14 15:53:33
【问题描述】:

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

在我使用存储过程之前,但我的虚拟主机不允许这样做,所以这就是我考虑查询类解决方案的时候。我还需要补充一点,我不想在代码隐藏中进行数据绑定。

有没有办法做到这一点?

    <asp:SqlDataSource ID="DS" 
        runat="server"
        DataSourceMode="DataSet"  
        ConnectionString="<%$ ConnectionStrings:conn %>"
        ProviderName="MySql.Data.MySqlClient"
        SelectCommand="<% Query.getTestQuery() %>"
        >
    </asp:SqlDataSource>

【问题讨论】:

    标签: asp.net mysql sqldatasource selectcommand


    【解决方案1】:

    也许使用 ObjectDataSource。这样,在您的对象内部,您就可以在那里进行动态查询。

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

    【讨论】:

      【解决方案2】:

      在 ASP.NET 中无法做到这一点。 &lt;% %&gt; 标签中的代码用于运行任意代码,而不是用于设置属性值。 &lt;%= %&gt; 标签中的代码用于渲染到输出流。 &lt;%# %&gt; 中的代码用于数据绑定,这与您要完成的工作类似,但并不相同。 &lt;%$ %&gt; 中的代码用于表达式绑定,但它们在页面生命周期中执行得太早,因此不太可能在您的场景中工作。

      使用 ObjectDataSource 是一种方法,因为此时它只是代码,您的代码可以根据页面的状态做任何事情。

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

      【讨论】:

        猜你喜欢
        • 2010-09-22
        • 2013-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        相关资源
        最近更新 更多