@Swordfish
Hallo Swordfish,
Das mit dem Crosslink wusste ich nicht.
Mache ich das nächste mal.
Einen Supporvertrag gib es natürlich auch nicht.
Aber wenn ein Problem gelöst ist, woher auch immer, dann setze ich die Lösung auch in die anderen Threads.
Aber inzwischen bin ich selbst einen Schritt weiter gekommen.
Habe wohl auch etwas treffendere Suchbegriffe verwendet.
Z.B.: https://social.msdn.microsoft.com/Forums/windows/en-US/7471dd6e-aced-4131-875b-ff2c645adbd9/how-to-disable-editing-in-the-existing-rows-in-a-datagridview-and-allow-the-user-to-add-new-row-to?forum=winformsdatacontrols
protected void Gv_Condition_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView gv = (GridView)sender;
GridViewRow gvr = gv.Rows[e.NewEditIndex];
e.Cancel = true;
Pn_UpdateCondition.Visible = true;
TableCell tc = gvr.Cells[0];
tc = gvr.Cells[1];
.....
Ich habe das "e.Cancel = true;" in die Function reingesetzt.
Nun geht es wieder.
Es ist schon sau blöd, wenn gleich drei Fehler hintereinander geschaltet sind.
Zunächst hatte ich nur Angaben für die Definition des Gridview im aspx gefunden, wo nur der Parameter AutoGenerateColumns="False" angegeben wurde.
Und auch lange Zeit nichts weiter dazu.
Das hatte wohl unter .net 2.0 gereicht.
Warum sich Microsoft keine besseren und von vornherein eindeutigere Definitionen und Funktionen einfallen lässt bleibt mir schleierhaft.
Vielen Dank noch an alle, die sich durch meine Quelltexte gelesen hatten.
Grüsse
Helmut
Nach tagelangem Suchen, und auch mit Burkhis Hinweis, habe ich es nun doch hinbekommen.
Folgende Anpassungen.
In der" web.config":
<pages clientIDMode="Static">
Ich habe den clientIDModeergänzt. am Textfeld habe ich nichts geändert.
In der "page.master" habe ich die neue Function wie folgt ausgelegt:
function ProcessChildMessage(message) {
var pos = message.lastIndexOf("$");
if (pos >= 0) {
var fieldvalue = message.substr(pos + 1);
var pos2 = fieldvalue.lastIndexOf("=");
if (pos2 > 0) {
var myfield = fieldvalue.substr(0, pos2);
var myvalue = fieldvalue.substr(pos2 + 1);
document.getElementById(myfield).value = myvalue;
} else {
alert(fieldvalue);
}
} else {
alert(message);
}
return true;
}
Die alte Methode, die Werte zu übergeben habe ich fallen lassen.
Danke nochmals für eure Antworten.
Grüsse
Helmut
Inzwischen bin ich etwas klüger geworden.
Musste dazu eben nochmal 20 oder 30 Stunden investieren.
Dabei hat mir dann mein anderer Thread mit dem DatePicker geholfen.
Also leider keine Hilfe von euch.
Ich habs selber raus bekommen, mit Hilfe von
https://weblogs.asp.net/scottgu/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series
und etwas durch die Beiträge im anderen Thread.
Ich habe folgende Anpassungen gemacht.
In der web.config:
<pages clientIDMode="Static">
In der page.master:
function deleteCondition()
{
var ans;
ans=window.confirm('Möchten Sie diesen Zustand wirlich löschen?');
if (ans==true)
{
document.getElementById('hdnbox').value = 'Yes';
}
else
{
document.getElementById('hdnbox').value = 'Yes';
}
return false;
}
```Also über "getElementById"
Aber vielen Dank an alle.
So wie du den StreamReader instanzierst muss die Quelldatei (vonBank.csv) im UTF-8-Format vorliegen. In C# selbst sind dann alle Strings sowieso UTF16, das ist nicht änderbar und auch keine gute Idee daran herumzuwerken.
Dein File scheint aber nicht als UTF-8 vorzuliegen, sonst müsste im Hex-Code für ein "ä" "c3 a4" stehen. Finde raus mit welchem Encoding deine Bank das File ablegt (versuch bspw. mal ISO-8859-1) und gib dann dieses Encoding beim StreamReader an.
MfG SideWinder
Edit: das kommt davon wenn man Tabs aufmacht und nicht refreshed vor dem Antworten.....
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