Laden...

Tabellen-/ Listenwert in Sharepoint auslesen

Erstellt von Rico913 vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.911 Views
R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren
Tabellen-/ Listenwert in Sharepoint auslesen

Ich relativ neu und stelle mich neuen Herausforderungen in der C#-Welt

Mein Ziel ist es einen bestimmten Wert aus einer Tabelle auf unserer Website auszulesen. Diese Liste liegt im SharePoint.

Die Seite liegt unter der Adresse http://......./AllItems.aspx

Es gibt vier Spalten -> Gerät // Status // RestZeit // Geändert

Die Restzeit gibt an, das ein Gerät in x-Minuten eingekühlt werden muss. Ziel ist es in meinem Form eine Ampel darzustellen ≤15 -> rot // 15 <=> 60 -> orange // >60 -> grün, die sich alle paar Minuten aktualisiert.

Die Form-Programmierung mit der Ampel bekomme ich hin, aber ich hab momentan keine Ahnung, wie ich an die Daten komme. Ist das generell möglich?
Mir fehlt ein wenig der Ansatz, ich habe mich zwar schon durch diverse Docs gekämpft, aber ich glaube ich bin etwas durcheinander gekommen 😦

3.825 Beiträge seit 2006
vor 3 Jahren

Daten im Web kannst Du abrufen mit :


WebClient cl = new WebClient();
string html = cl.DownloadString(...);
...

Wenn die Website ohne Browser nichts liefert kannst Du ein WebBrowser Control einsetzen, die Website laden und dann das aktuelle Dokument auslesen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

16.807 Beiträge seit 2008
vor 3 Jahren

Der SharePoint hat seit gefühlt 100 Jahren eine API für das Auslesen von Dateien oder Informationen über Anwendungen.

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Danke für die Starthilfe, leider bin ich noch nicht auf dem richtigen Weg 😦

Im Quellcode der Website ist folgendes Script hinterlegt:


<script language="javascript" type="text/javascript">
function timedRefresh(timeoutPeriod) {
setTimeout("window.location.href = window.location.href;",timeoutPeriod);

}
timedRefresh(600000);// for 10 minutes

var i=0;
var allCells = document.getElementsByTagName("td");
for(i=0;i<allCells.length; i++)
{if(allCells[i].innerText.indexOf("Cryoampel#") == 0)
{if(allCells[i-1].innerText == "Eingekühlt")
{
var sharepointtime = Math.abs(Date.parse("January 01  1900 00:00:00"))/1000/60/60;
var modtime = (allCells[i].innerText.split("#")[1]);
//Stunden seit 1900
modtime = modtime.replace(/,/g, '.')*24;
//modtime in Stunden seit 1970
var modtime_js =  modtime-sharepointtime;
//currtime in Stunden seit 1970
var currtime = new Date();

//Korrektur für Sommerzeit
var jan = new Date(currtime.getFullYear(), 0, 1).getTimezoneOffset();
var jul = new Date(currtime.getFullYear(), 6, 1).getTimezoneOffset();
if(Math.max(jan, jul) != currtime.getTimezoneOffset())
{
currtime = (currtime.getTime()/1000/60/60)+1;
}
else
currtime = currtime.getTime()/1000/60/60;

var remtime = ((modtime_js + 4) - currtime)-48;
var sremtime = remtime.toString();
var remtimesplit = sremtime.split(".");
var remminutes = Math.abs(parseInt((remtime-parseInt(remtimesplit[0]))*60));
if (remminutes <10) {remminutes = "0"+remminutes};
if(remtime <= 0.5)
{
allCells[i].innerHTML = "<b><font color='red'>"+remtimesplit[0]+":"+remminutes+"</font></b>";
}
else
allCells[i].innerHTML = remtimesplit[0]+":"+remminutes;
}
else
allCells[i].innerHTML = "-";
}
}</script>

Ich vermute, dass der Wert "allCells_.innerHTML", der Wert ist, den ich benötige.

Das Einzige was ich bisher geschafft habe, ist den Quellcode als Ganzes downzuloaden:


 WebClient client = new WebClient();
client.UseDefaultCredentials = true;
string reply = Client.DownloadString("http://...../Lists/SEMTEM%20cryo%20cycle%20tracker/AllItems.aspx");
Console.WriteLine(reply);

Aber das ist ja leider nicht das Ziel....
Muss ich das Script nicht irgendwie laufen lassen, damit ich den berechneten Wert bekomme?

5.657 Beiträge seit 2006
vor 3 Jahren

Liest du dir die Antworten auf deine Frage eigentlich auch durch?
Niemand würde das so machen, SharePoint hat eine API, die genau für diese Zwecke entwickelt wurde. Wenn du die nicht verwendest, wird dir wohl niemand weiterhelfen können.

Weeks of programming can save you hours of planning

R
Rico913 Themenstarter:in
95 Beiträge seit 2020
vor 3 Jahren

Na klar, lese ich mir die Antworten durch und Bernd hat gleich im ersten Kommentar geschrieben, ich solle es mit einem Web-Client probieren. Dies erschien mir der unkomplizierteste Weg....

Sorry, dass ich da mit meiner wenigen Erfahrung nicht die Kompetenz habe, auf Anhieb zu erkennen, welch die richtige, saubere Methode ist. Zumal viele Wege nach Rom führen, ob sie nun steinig oder asphaltiert sind sei mal dahin gestellt.