ObjectDataSource - >方法采用两个参数,一个是连接字符串

时间:2012-09-24 21:31:32

标签: c# asp.net

我正在将旧网站更新为更现代的外观。他们希望能够CRUD他们的数据表,以便用户可以轻松编辑/更新/删除内容而无需转到特殊页面。

要做到这一点,我要将ObjectDataSource设置为旧方法。

他们的方法采用连接字符串

的参数
GetCustStaff(string cstGID, string ConnString);

如何告诉ObjectDataSource ConnString值来自web.config?

ConfigurationManager.AppSettings.Get("Connection").ToString()

它让我填充参数的唯一选项是(None, Cookie, Control, Form, Profile, QueryString, Session, RouteData).

任何人都知道我怎么能绕过这个?

2 个答案:

答案 0 :(得分:2)

将其设置为“None”,并将其添加到对象数据源代码(.ASPX)中:

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

onselecting="ObjectDataSource_Selecting"

完整代码:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" onselecting="ObjectDataSource1_Selecting">
    <SelectParameters>
        <asp:Parameter Name="connString" Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>

然后,在你的代码背后:

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
    e.InputParameters["connString"] = ConfigurationManager.AppSettings.Get("Connection").ToString();

}

useful link

答案 1 :(得分:2)

您可以创建一个类并从中调用方法。您将在类中的方法中添加带有变量/ const的ConnectionString。这可能是包装现有代码的更好方法。您可能还需要一个selectcount方法 - 但我不完全确定您要将对象数据源绑定到。

<asp:ObjectDataSource ID="objStaff" runat="server" SelectCountMethod="GetStaffDataCount" SelectMethod="GetStaffData" TypeName="yourNameSpace.ClassName">
<SelectParameters>
<asp:Parameter Name="StaffID" Type="Int32" DefaultValue="0" />
</SelectParameters>
</asp:ObjectDataSource>

新 然后在你的班级

public class ClassName(){

protected void getStaffData(int staffID)
{
 GetCustStaff(staffID, ConfigurationManager.AppSettings.Get("Connection").ToString())

...//fill method 

}

}