2

古いウェブサイトをよりモダンな外観に更新しています。彼らは、CRUDユーザーが特別なページに行かなくても簡単に編集/更新/削除できるように、データテーブルの機能を望んでいます。

これを行うために、古いメソッドに ObjectDataSource を設定しています。

それらのメソッドは、接続文字列のパラメーターを取ります

GetCustStaff(string cstGID, string ConnString);

ConnString 値が web.config からのものであることを ObjectDataSource に伝えるにはどうすればよいですか?

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

Paramを埋めるために私に与える唯一のオプションは(None, Cookie, Control, Form, Profile, QueryString, Session, RouteData).

これを回避する方法を知っている人はいますか?

4

2 に答える 2

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 に答える
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 に答える