Как программно изменить метод SelectMethod объекта ObjectDataSource? - PullRequest
3 голосов
/ 25 апреля 2011

Предположим, у меня есть заданный ObjectDataSource, для этого свойства objectdatasource "SelectMethod" установлено значение "GetProjectsByUsername" класса Project, и он принимает один параметр.

 <asp:ObjectDataSource ID="GetProjectsDataSource" runat="server" SelectMethod="GetProjectsByUsername"
    TypeName="BusinessLayer.Project">
    <SelectParameters>
        <asp:ControlParameter ControlID="hiddenUsername" Name="username" PropertyName="Value"
            Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>

Теперь, возможно ли изменить свойство SelectMethod этого ObjectDataSource на метод, который принимает два параметра во время метода OnInit? например

MethodName: GetProjectByUsernameDeptCd ()
Параметры: Имя пользователя, DepartmentCode

Я хотел бы изменить метод выбора в зависимости от ролей пользователя. Я пытался найти SO и Интернет, но, похоже, мне не повезло. В любом случае я хотел сделать как:

if (роль администратора)
Используйте SelectMethod и параметры по умолчанию, объявленные в ASPX
еще
Измените метод выбора на «GetProjectByUsernameDeptCd»
Установить параметр1 = значение1
Установить параметр2 = значение2

Или я думал, есть ли другие лучшие способы сделать это.

Спасибо и всего наилучшего, Sherwin

Ответы [ 3 ]

5 голосов
/ 25 апреля 2011

Да, вы можете сделать это в событии OnSelecting ObjectDataSource в файле с выделенным кодом.

Пример.

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        ObjectDataSource1.SelectMethod = "<YourSelectMethod>";
        e.InputParameters.Clear(); // this is a different method with new parameters.
        e.InputParameters.Add("Param1", "Value1");
        e.InputParameters.Add("Param2", "Value2");
        e.InputParameters.Add("Param3", "Value3");
    }

Для получения более подробной информации, пожалуйста,Прочитайте статьи ниже: 1. http://weblogs.asp.net/rajbk/pages/426642.aspx

  1. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.selecting%28v=vs.90%29.aspx

  2. http://www.asp.net/data-access/tutorials/programmatically-setting-the-objectdatasource-s-parameter-values-vb

Надеюсь, это поможет..

Счастливого программирования!

3 голосов
/ 25 апреля 2011

Попробуйте это

 GetProjectsDataSource.SelectMethod = "GetProjectByUsernameDeptCd";
 Parameter p1 = new Parameter("parameter1 ",TypeCode.String);
 Parameter p2 = new Parameter("parameter2 ",TypeCode.String);
 GetProjectsDataSource.SelectParameters.Add(p1);
 GetProjectsDataSource.SelectParameters.Add(p2);
0 голосов
/ 25 апреля 2011

Вы пробовали код C #? Вместо того, чтобы определять его в разметке aspx, перейдите в файл codebehind и сделайте это там.

...