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

本文关键字:ObjectDataSource SelectMethod 方式更 编程 | 更新日期: 2023-09-27 17:52:38

假设我有一个给定的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方法期间接受两个参数的方法?例如

方法名称:GetProjectByUsernameDeptCd()
参数:Username, DepartmentCode

我想更改用户角色的选择方法。我试着搜索SO和互联网,但似乎我没有运气。总之,我想这样做:

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

或者我在想是否有其他更好的方法来做到这一点。

谢谢你并致以最良好的问候。舍温

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

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

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

    http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.selecting%28v=vs.90%29.aspx
  1. http://www.asp.net/data-access/tutorials/programmatically-setting-the-objectdatasource-s-parameter-values-vb

希望对你有帮助。

编程快乐!

试试这个

 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);

你试过c#背后的代码吗?而不是在aspx标记中定义它,转到代码隐藏文件,并在那里进行。

相关文章:
  • 没有找到相关文章