如何以编程方式更改ObjectDataSource的SelectMethod?

She*_*win 3 c# asp.net objectdatasource

假设我有一个给定的ObjectDataSource,这个objectdatasource"SelectMethod"属性被设置为类Project的"GetProjectsByUsername"并接受一个参数.

 <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>
Run Code Online (Sandbox Code Playgroud)

现在,是否可以将此ObjectDataSource的SelectMethod属性更改为在OnInit方法期间接受两个参数的方法?例如

MethodName:GetProjectByUsernameDeptCd()
参数:Username,DepartmentCode

我想通过用户角色更改select方法.我试图搜索SO和互联网,但似乎我没有运气.无论如何我想做的事情如下:

if(Role is Admin)
使用在ASPX中声明的默认SelectMethod和Parameters
else
将SelectMethod更改为"GetProjectByUsernameDeptCd"
设置parameter1 = value1
设置parameter2 = value2

或者我在想是否还有其他更好的方法可以做到这一点.

谢谢你,最诚挚的问候,Sherwin

Sau*_*abh 5

是的,您可以在代码隐藏文件中的ObjectDataSource 的OnSelecting事件中执行此操作.

防爆.

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");
    }
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请阅读以下文章: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

希望这会有所帮助..

快乐编程!