2

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

为此,我为他们的旧方法设置了一个 ObjectDataSource。

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

GetCustStaff(string cstGID, string ConnString);

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

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

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

任何人都知道我该如何规避这个问题?

4

2 回答 2

2

将其设置为“无”,并将其添加到您的对象数据源代码 (.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();

}

有用的链接

于 2012-09-24T21:42:56.723 回答
2

您可以创建一个类并从中调用方法。您将在类中的方法中添加带有变量/常量的 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 

}

}

于 2012-09-24T22:47:54.633 回答