SqlDataSource устанавливает SelectCommand динамически

0

Я использую SqlDataSource и не записываю длинные запросы непосредственно в свой код. Я думал, что могу создать класс Query, который возвращает запрос, который я хочу в качестве строки. Я попробовал код ниже, но я просто получил "Теги сервера не могут содержать <%...% > конструкций".

До того, как я использовал хранимые процедуры, но мой веб-хостинг не позволяет этого, так вот, когда я думал о решении класса Query. Мне также нужно добавить, что я не хочу делать привязку данных в коде.

Есть ли способ сделать это?

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

2 ответа

1

Это невозможно сделать в ASP.NET. Код в тегах <% %> предназначен для запуска произвольного кода, а не для задания значений свойств. Код в тегах <%= %> предназначен для рендеринга в выходной поток. Код в <%# %> предназначен для привязки данных, который аналогичен тому, что вы пытаетесь выполнить, но это не то же самое. Код в <%$ %> предназначен для привязок к выражениям, но они слишком рано запускают жизненный цикл страницы и, следовательно, вряд ли будут работать в вашем сценарии.

Использование ObjectDataSource - один из способов сделать это, поскольку в этот момент он просто код, и ваш код может делать все, что захочет, в зависимости от состояния страницы.

Использование производного SqlDataSource - это еще один вариант. Создайте элемент управления, который выводится из SqlDataSource и переопределяет его метод OnInit. В методе OnInit вы можете динамически настроить SelectCommand на то, что вы хотите, в зависимости от состояния страницы.

0

Возможно, используйте объект ObjectDataSource. Таким образом, внутри вашего объекта вы сможете сделать там свой динамический запрос.

В противном случае вы можете изменить SelectCommand во время выбора события SqlDataSource в коде. Затем вы можете изменить SelectCommand на все, что вам нравится.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню