Durch das GroupBy sind die Informationen über die einzelnen Zeilen nicht mehr vorhanden. Du mußt also jeweils eigene SELECT-Abfragen stattdessen durchführen.
@Wade1234 sagte in Json - SelectToken - Daten summieren, die ein bestimmtes Alter haben.:
@bruder
diese einstellung solltest du nochmal überdenken......
Naja wenn er niemals professionell Softwareentwicklung machen will, kommt er mit der Einstellung hin. Und für privaten Schmuddelcode ist das dann eben auch ausreichend. Beruflich würde er damit nicht weit kommen, denn sein SeniorDev würde ihn dafür mit dem Kopf zuerst vom Balkon baumeln lassen
Hallo zusammen,
mein Programm zeigt bei Ausführung einen Button sowie eine Tabelle mit 2 Spalten an. Bei Klick auf den Button möchte ich gerne einen speziellen Eintrag in dieser Tabelle ändern. Aber nur diesen einen. Alle anderen Einträge sollen so bleiben wie sie sind.
Folgendes Beispiel zur Veranschaulichung:
[Programmstart]
Eintrag Nummer 1 | Originalwert
Eintrag Nummer 2 | Originalwert
Eintrag Nummer 3 | Originalwert
[Button-Klick]
Eintrag Nummer 1 | Originalwert
Eintrag Nummer 2 | Geänderter Wert
Eintrag Nummer 3 | Originalwert
Wie kann ich das erreichen? Wie muss meine private void OnButtonClick(object sender, EventArgs e)-Funktion aussehen? Vor allem, wie kann ich auf einen speziellen Eintrag in dieser Liste zugreifen?
Um mir besser helfen zu können, poste ich nachfolgend meinen Code. Es handelt sich um eine Xamarin.Android-App, ich arbeite mit einer ListView bzw. mit einem ListAdapter : ArrayAdapter:
public class MyActivity : Activity
{
List List = null;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.MyActivity);
List = PopulateList();
var lv = FindViewById(Resource.Id.list);
var adapter = new ListAdapter(this, Resource.Layout.List, List);
lv.Adapter = adapter;
FindViewById(Resource.Id.button).Click += OnButtonClick;
}
}
class ListAdapter : ArrayAdapter
{
List List;
public ListAdapter(Context Context, int ListId, List List) : base(Context, ListId, List)
{
this.List = List;
}
public override int Count
{
get { return List.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View v = convertView;
if (v == null)
{
LayoutInflater inflater = (LayoutInflater)Context.GetSystemService(Context.LayoutInflaterService);
v = inflater.Inflate(Resource.Layout.List, parent, false);
}
v.FindViewById(Resource.Id.name).Text = List[position].Name;
v.FindViewById(Resource.Id.value).Text = "Originalwert";
return v;
}
}
Unter Nutzung folgender *.axml-Dateien:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android ="http://schemas.android.com/apk/res/android"
android:orientation ="vertical"
android:layout_width ="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width ="match_parent"
android:layout_height="wrap_content"
android:text="Click Me"
android:id="@+id/button" />
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/value"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
Wie kann ich in der private void OnButtonClick(object sender, EventArgs e)-Funktion auf die entsprechende View zugreifen/diese Verändern?
Wenn ich folgendes mache:
private void OnButtonClick(object sender, EventArgs e)
{
FindViewById(Resource.Id.value).Text = "Geänderter Wert";
}
ändert er den ersten Eintrag der Liste. Aber wie kann ich ausschließlich nur den zweiten ändern (siehe Beispiel)?
Würde mich wirklich sehr freuen, wenn sich jemand meiner annehmen und mir helfen könnte.
Vielen Dank für alle Antworten schon mal im Voraus
Freundliche Grüße
@Th69
Hallo Ihr beiden Helfer.
Wie immer sitzt das Problem vor dem Monitor.
Mein Fehler 1: ich hatte noch 4.5 statt 4.6 oder größer eingestellt. Deshalb war FromUnixTimeSeconds nicht benutzbar. Mit 4.6 klappt es.
Hier mein jetzt funktionierendes Beispiel: Es wird korrekt 20.11.2018 07:56:43 zurück gegeben.
long unixDateTime = 0x5C00DF2A;
var localDateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(unixDateTime).DateTime.ToLocalTime();
@Th69 ,
ich habe Deinen Code ausprobiert, da kommt 20.11.2018 06:56:43 heraus, also eine Stunde weniger 6 Uhr statt 7 Uhr. Das liegt an der Linux-Zeit, die sich i.d.R. nach Greenwich richtet, also eine Stunde vor unserer Zeit. ToLocalTime() bringt das offenbar in Ordnung.
long seconds = 0x5C00DF2A;
var dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(seconds);
DateTime dateTime = dateTimeOffset.DateTime.ToLocalTime();
Ja ist gut. Danke !!! Sauber programmieren muss ich noch lernen. Vielleicht kann man hier abschliessen. Ein gutes neues Jahr 2019, und auf eine weitere gute Zusammenarbeit.
@chicken25 sagte in Sieb des Eratosthenes bringt alles durcheinander:
Ich möchte eine Ulam-Spirale programmieren.
Zu allererst möchtest du dir viel lieber ein Lehrbuch zu C# besorgen oder zumindest (falls nicht im Budget) ein paar Tutorials lesen und verstehen.
Du machst im Prinzip den selben Fehler wie in deinem anderen Thread.
@Swordfish sagte in Sieb des Eratosthenes funktioniert nicht:
Gewöhn dir besser an, vollständigen Code zu zeigen, wenn du eine Frage hast. Dann kannst du besser gehelft werden.
Und Fehlermeldung kopieren statt "geht nicht" wäre auch sinnvoll.
@biter Im Grunde hast du ja recht, wobei die Alternative zum stabilen Bubblesort nicht Quicksort (der im Übrigen wieder ganz andere Probleme hat [siehe Introsort]) , sondern Insertion-, oder, wenn es nicht in-place sein muss, Mergesort ist.
Demoprogramm klingt auch danach, als ob der TE grundlegende Sortieralgorithmen evtl. Schülern oder einfach sich selbst näherbringen möchte - und da darf eben der Bubblesort nicht fehlen.
Einfache Beispielimplementierungen für diverse Sorts in mehreren Sprachen sind z.B. hier zu finden.
@Th69 Es passt schon, aber ich suche (Für Übungszwecke) einen anderen Weg um das zu vergleichen. Ich habe
z.B. an if (zahl - (int)zahl == 0) gedacht weil int-int ja 0 ist und somit eine Zahl ohne Komma. Aber irgendwie will das nicht
Was ist ausgabe für ein Feld? Eine TextBox? Dann nutze string.Format() vor der Zuweisung an ".Text". Bspw. wie hier: https://stackoverflow.com/questions/15473216/how-to-format-a-windows-forms-textbox-with-thousand-separator-and-decimal-separt
MfG SideWinder
Habe mein ganzes Projekt jetzt durchforstet, aber konnte leider nirgends GroceryList.string finden.
Habe in meinem Studium Java gehabt und über Tutorials bereits eine Konsolen-Anwendung geschrieben, in der der Datenbankzugriff sowie das Darstellen der Daten wunderbar funktioniert hat:
static void Main(string[] args)
{
SqlConnection connection = new SqlConnection("Server=.\[servername];Database=[dbname];User Id=[userid];Password=[password];");
connection.Open();
SqlCommand cmd = new SqlCommand("SELECT adrsuche1 FROM [dbo].[Adressen]", connection);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("{0}",reader.GetString(0));
}
reader.Close();
connection.Close();
if (Debugger.IsAttached)
{
Console.ReadLine();
}
Nur krieg ich den Transfer nicht ganz hin. Leider gibt es beispielsweise die Funktion Console.WriteLine() in einer App bzw. bei Xamarin nicht, daher nach einiger Recherche / diversen anderen Versuchen der Versuch jetzt mit dem ListView - Element.
Das ist doch pures WinAPI Zeugs.
Inkl. Subclassing etc.
Ich gehe mal davon aus, dass du NICHT gesucht hast.
Meine Google Suche ergab sofort x-Beispiel Codes in MFC und C++
Hier ein Kandidat:
https://www.codeproject.com/Articles/14500/Detecting-Hardware-Insertion-and-or-Removal
ich bekomme nur einen Zugang über IE7 & 8 mit bestimmter Sicherheit Einstellung der Activex und Javascripts
da sonst die user/passw. sichtbar sind aber nicht korrekt funktionieren.
nun mein Problem ist, ich hab diese Einstellungen am winform webbrowser nicht..
wie zB.: IE Security Setings/ Allow Scriptlets => Enable etc.
kann man da was machen?
private void button1_Click(object sender, EventArgs e)
{
this.webBrowser1.ScriptErrorsSuppressed = true;
this.webBrowser2.Navigate(textBox1.Text, null);
}