Aktualizuję starą stronę internetową do bardziej nowoczesnego wyglądu. Chcą mieć możliwość CRUD swoich tabel danych, aby użytkownicy mogli łatwo edytować/aktualizować/usuwać rzeczy bez wchodzenia na specjalne strony.

Aby to zrobić, konfiguruję ObjectDataSource do ich starych metod.

Ich metody przyjmują parametr ciągu połączenia

GetCustStaff(string cstGID, string ConnString);

Jak powiedzieć ObjectDataSource, że wartość ConnString pochodzi z pliku web.config?

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

Jedyne opcje, które daje mi do wypełnienia Param, to (None, Cookie, Control, Form, Profile, QueryString, Session, RouteData).

Czy ktoś ma jakiś pomysł, jak mogę to obejść?

2
James Wilson 25 wrzesień 2012, 01:31

2 odpowiedzi

Najlepsza odpowiedź

Ustaw go na "Brak" i dodaj to do kodu źródłowego danych obiektu (.ASPX):

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

I

onselecting="ObjectDataSource_Selecting"

Pełny kod:

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

Następnie w kodzie za:

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

}

Przydatne link

2
Thousand 25 wrzesień 2012, 02:08

Możesz stworzyć klasę i wywołać z niej metody. Należy dodać ConnectionString ze zmienną/const w metodzie w klasie. Może to być lepszy sposób na zawinięcie istniejącego kodu. Możesz również potrzebować metody selectcount — ale nie jestem do końca pewien, z czym chcesz powiązać źródło danych obiektu.

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

Nowy wtedy w twojej klasie

public class ClassName(){

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

...//fill method 

}

}

2
user1695717 25 wrzesień 2012, 02:47