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 odpowiedzi
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();
}
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
}
}
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.