我正在将旧网站更新为更现代的外观。他们希望能够CRUD
他们的数据表,以便用户可以轻松编辑/更新/删除内容而无需转到特殊页面。
要做到这一点,我要将ObjectDataSource设置为旧方法。
他们的方法采用连接字符串
的参数GetCustStaff(string cstGID, string ConnString);
如何告诉ObjectDataSource ConnString值来自web.config?
ConfigurationManager.AppSettings.Get("Connection").ToString()
它让我填充参数的唯一选项是(None, Cookie, Control, Form, Profile, QueryString, Session, RouteData).
任何人都知道我怎么能绕过这个?
答案 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();
}
答案 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
}
}