假设我有一个给定的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>
现在,是否可以将此ObjectDataSource的SelectMethod属性更改为在OnInit方法期间接受两个参数的方法?例如
MethodName:GetProjectByUsernameDeptCd()
参数:Username,DepartmentCode
我想按用户角色更改select方法。我试图搜索SO和互联网,但似乎我没有运气。无论如何,我想做的是:
if(Role is Admin)
使用ASPX中声明的默认SelectMethod和Parameters 否则
将SelectMethod更改为“GetProjectByUsernameDeptCd”
设置parameter1 = value1
设置parameter2 = value2
或者我在想是否还有其他更好的方法可以做到这一点。
谢谢你,最诚挚的问候, 舍温
答案 0 :(得分: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");
}
有关详细信息,请阅读以下文章: 1. http://weblogs.asp.net/rajbk/pages/426642.aspx
答案 1 :(得分:3)
试试这个
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);
答案 2 :(得分:0)
您是否尝试过C#代码隐藏?而不是在aspx标记中定义它,转到代码隐藏文件,并在那里执行。