Перезапись ControlParameters источников данных в коде - PullRequest
1 голос
/ 08 марта 2010

У меня есть ObjectDataSource (но, возможно, этот вопрос одинаков для всех видов источников данных, которые поддерживают наборы параметров):

<asp:ObjectDataSource ID="MyObjectDataSource" runat="server" 
    TypeName="MyData"
    OldValuesParameterFormatString="original_{0}" 
    SelectMethod="GetMyData" >
    <SelectParameters>
        <asp:ControlParameter ControlID="MyTextBox" Name="MyParameter" Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>

Как вы можете видеть, на странице aspx есть ControlParameter, связанный с TextBox. Таким образом, содержимое этого TextBox является параметром для моего SelectMethod. Но на странице есть специальная кнопка: когда эта кнопка нажата и происходит обратная передача, я не хочу, чтобы DataSource извлекал содержимое TextBox для управления выделением, вместо этого я хочу установить конкретное жесткое значение «x» в качестве параметра выбора.

Как я могу это сделать? Могу ли я каким-то образом «отключить» ControlParameter при нажатии на эту конкретную кнопку и установить вместо этого мое специальное значение? Или есть другой способ?

Спасибо за отзыв заранее!

1 Ответ

1 голос
/ 09 марта 2010

Я сам нашел это решение:

Я заменил asp:ControlParameter на «универсальный» параметр:

<SelectParameters>
    <asp:Parameter Name="MyParameter" Type="String" />
</SelectParameters>

... и затем в обработчике событий для специальной кнопки:

MyObjectDataSource.SelectParameters["MyParameter"].DefaultValue = "x";

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

MyObjectDataSource.SelectParameters["MyParameter"].DefaultValue = MyTextBox.Text;

Я не знаю, является ли это хорошим решением или может ли оно иметь нежелательные побочные эффекты. Но на данный момент это работает. (В любом случае мне было интересно, какова цель «универсальных» параметров. Возможно, именно это: «несвязанные» параметры, которые должны быть установлены только выделенным кодом (за исключением того, что они являются базовым классом пользовательских классов параметров)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...