Laden...

Forenbeiträge von Paulo Ingesamt 172 Beiträge

02.10.2006 - 11:26 Uhr

Hi,

hab ein Gridview mit insgesamt 3 Spalten: ID, Sektion, CustomTemplateField.
Im CustomTemplateField steht für jede Zeile eine Checkbox, so siehts aus das Gridview:


  <asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnRowDataBound="GridView1Row">
    <Columns>
        <asp:BoundField HeaderText="ID" DataField="ID" SortExpression="ID"/>         
        <asp:BoundField HeaderText="sektionName" DataField="sektionName" SortExpression="sektionName"/>         
        <asp:TemplateField HeaderText="Activated">
        <ItemTemplate>
        <asp:CheckBox ID="CheckBoxActivated" runat="server" />
        </ItemTemplate>
        </asp:TemplateField>        
     </Columns>     
        <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
        <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
        <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
        <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
        <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="White" />
    </asp:GridView>

Im Gridview werden alle verfügbaren Sektionen angezeigt.
Nun hab ich eine SQL Tabelle in der die Benutzer den Sektionen zugeteilt sind, user_sections:
us_ID, userID, sectionID.

Ich wähle über eine DropDownList einen Benutzer aus und würde gern ein Häckchen in der Checkbox haben für jede Sektion für die der Benutzer freigeschaltet ist (aufgrund der user_sections Tabelle)

So hab ichs probiert und bin fatal gescheitert:


    protected void GridView1Row(object sender, GridViewRowEventArgs e)
    {
        cn = new SqlConnection(System.Web.Configuration.WebConfigurationManager.ConnectionStrings["pricespyConnectionString"].ConnectionString.ToString());

        SqlDataReader dr;
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;
        cmd.CommandText = "SELECT usID from user_shops WHERE userID="+DropDownListCustomers.SelectedValue.ToString()+" AND shopID=@shopID";        
        cn.Open();

            string ValueExists = String.Empty;
        dr = cmd.ExecuteReader();
        while (dr.Read() == true)
        {
            ValueExists = dr["usID"].ToString();
        }
        dr.Close();
        cn.Close();

        if (ValueExists != String.Empty)
        {
            CheckBoxActivated.Checked == true;
        }
    }

Probleme:

  1. @shopID kennt er nicht
  2. SelectedValue ist beim ersten mal leer
  3. CheckBoxActivated existiert nicht im Codebehind (Siehe Gridview CustomTempalteField)

Weiß jemand Rat? Vielen vielen Dank!

25.09.2006 - 14:01 Uhr

Hi,

das löst jedoch das Spalten Problem nicht.. denn ich würde gern für jede Kategorie eine Spalte haben in der zusammen die Ratings aufgelistet werden. Im Moment hätte ich für jede Kategorie auch eine Zeile verbraucht und hätte nur 3 Spalten ingesamt.

Anstatt Artikel Kategorie Rating folgende Spalten:
Artikel Kategorie1 Kategorie2 Kategorie3 (..) Rating

25.09.2006 - 13:31 Uhr

Um die Frage zu verdeutlichen, wie komm ich von diesem Tabellenformat:
RatingID, ArtikelID, KategorieID, Rating

zu dieser Anzeige (HTML):

Als Spalten: Katgegorien
Zeilen: Artikelname - Rating (einsortiert unter den jeweiligen Kategorien)

Danke..!

25.09.2006 - 13:23 Uhr

Bin mit meinem Latein am Ende, hab mehrere Tabellen und nun würde ich gerne aus allen etwas anzeigen.

Die Tabelle um die es geht ist Rating:
RatingID, ArtikelID, KategorieID, Rating

Jetzt will ich anzeigen:

Als Spalten die ganzen Kategorien auflisten, jedoch nicht die ID sondern natürlich die Spaltennamen.

Die Zeilen stellen die Artikel da - wiederum Artikelnamen und nicht die ArtikelID. Die einzelnen Felder innerhalb ist dann das Rating selbst. Könnte also z.B. so aussehn:

----------KategorieA----KategorieB----KategorieC
Artikel1-Rating--------- Rating---------NULL
Artikel2-NULL-----------Rating----------Rating
etc.

Sowohl Artikel als auch Kategorie ist dynamisch.

Nun die Frage: Wie krieg ich so eine Query zusammen und vor allem WIE zeige ich es SO wie oben an? Denn in meiner Datenbank steht ja pro Kategorie eine Zeile, z.b.:

RatingID, Artikel1ID, KategorieAID, Rating
RatingID,Artikel2ID, KategorieAID, Rating

etc.

ich möchte also so gesehen die Kategorien als Spalten Indikator verwenden.. nur ich hab keine Ahnung wie ich das machen soll. Denn in meiner Datenbank heißt die Spalte einfach KategorieID.

Wenn ich in die Tabelle die ganzen Kategoriennamen schreib ist es nicht mehr relational, also z.b als Table Layout IN der Datenbank:

RatingID, ArtikelID, Kategorie1, Kategorie2, Kategorie3, Kategorie4, Rating

bin ratlos..

Danke!

17.08.2006 - 08:30 Uhr

Ok, vielen Dank, dann mach ich mich darüber mal schlau.

17.08.2006 - 08:18 Uhr

Sorry, das ist jetzt VBCode aber es betrifft mit Sicherheit auch C#:


Dim ds AsNew DataSet, dt AsNew DataTable, dr As DataRow
Dim Value AsDecimal = 1.234D
dt.Columns.Add("Test", Type.GetType("System.Decimal"))
dr = dt.NewRow
dr!Test = Value
dt.Rows.Add(dr)
ds.Tables.Add(dt)
ds.WriteXml("C:\WINDOWS\Temp\test.xml")
ds = New DataSet
ds.ReadXml("C:\WINDOWS\Temp\test.xml")
Value = ds.Tables(0).Rows(0)!Test
'test=1234 - and not 1.234 as it should

Anstatt 1.234 kommt 1234 raus. Ist das ein Bug in .NET?

14.08.2006 - 10:11 Uhr

Tja.. und sowas kommt von Yamaha 🙄
Es sind tatsächlich keine Tabs vorhanden..
ok ich probier mal ein wenig herum..

Danke für eure Hilfe!

14.08.2006 - 09:58 Uhr

Danke für deine Antwort.. Problem ist manche Angaben haben zwischen drin auch noch Leerzeichen (jedoch immer nur 1, also z.B. ABC DEF - das ist ein Element).

Kann ich auch per Tab splitten?


string delimSTR = "\t";

geht jedoch nicht, wenn ich da einfach ein Tab rein mach erkennt er das auch nicht..

thanks a lot!

14.08.2006 - 09:40 Uhr

Hi, hab folgende Zeile in meiner TXT Datei (eine von vielen):

Beispieltext Beispielgruppe XXXXXXX 00000 YYYYY 412312312312

Das Problem ist, die Whitespaces sind immer unterschiedlich lang, es gibt also keinen fixen Abstand zwischen den einzelnen Elementen.

Mein Programm sieht im Moment so aus:


            string delimSTR = " ";
            char[] delimiter = delimSTR.ToCharArray();            
            string output = String.Empty;

            while (((output = sr.ReadLine()) != null))
            {
                string[] test = output.Split(delimiter);
            }

Das hat natürlich zur Folge, dass ich etliche leere Elemente in meinem test Array habe. Kann ich das irgendwie umgehn damit ich nur Elemente im Array hab die auch gefüllt sind?

Vielen Dank!

29.06.2006 - 14:18 Uhr

Die Datenerhebung lässt keine Rückschlüsse auf die Person zu.

29.06.2006 - 12:40 Uhr

     <asp:DropDownList ID="DropDownList1" runat="server">
    </asp:DropDownList>

Bei dem klick auf Submit gehts so weiter:


..code..

Response.Redirect("next.aspx");

Würde nur ungern einen Server.Transfer nehmen weil man dann die URL oben nicht mehr sieht. Nur wie komm ich jetzt an die Value von DropDownList1?


string country = Request.Params["DropDownList1"];     

Funktioniert nicht.. (null)..

Danke!

27.06.2006 - 14:47 Uhr

Schreibe im Moment einen Warenkorb für europäische Kunden. Denkt ihr die Datenbank von GeoIP ist safe genug um eine automatische Auswahl zu implementieren?

Hier gibts mehr dazu: http://www.sitepoint.com/article/geoip-targetting

22.06.2006 - 14:43 Uhr

Ja aber wie kommt man an den eingegebenen Inhalt der Textboxen heran.. ?

22.06.2006 - 12:47 Uhr

Das ist in der Tat ein großes Problem.

Ich hab nun ewig gebraucht bis ich es geschafft habe dynamische Textboxen zu kreieren.. aber das Problem ist man kommt an den Wert nicht mehr ran. Die kreierten Textboxen sind beim Event Auslösen alle weg..

Also wohl doch zurück zu HTML input feldern........

22.06.2006 - 10:08 Uhr

mytable.GridLines = GridLines.Both;

ises..

22.06.2006 - 09:34 Uhr

Table mytable = new Table();
        mytable.BorderWidth = 2;

Er setzt aber immer:
<table border="0" style="border-width:2px;border-style:solid;">

Dieses border="0" ist default, kann man das auch editieren?

22.06.2006 - 09:08 Uhr

Also ich versuch gerade die Tabelle mal mit einer ASP.NET Table zusammenzuflicken aber das ist schon ziemlich viel Arbeit.. also mehr als mit dem StringBuilder aber es eröffnet natürlich die Möglichkeiten Controls zu adden.

22.06.2006 - 08:20 Uhr

Danke naumann, das hilft mir weiter!

@Kai: Bei mir kommt es oft vor, dass ich tables manuell im Codebehind zusammenstricken muss.

Ich hab z.B. verschiedene Conditionals, beim einen wird die Zeile angehängt, beim anderen die andere etc., zudem benutze ich Funktion Calls in einzelnen Zeilen wie z.B.:


sb.Append("<td class=\"c19\">" + lng.wkLow(Master.lngIX) + "</td><td class=\"c19\">&nbsp;</td><td class=\"c19\">&nbsp;</td></tr>");

Ich hätte keine Ahnung wie ich das mit einem Gridview alles hinbekommen würde..

21.06.2006 - 17:47 Uhr

Das ist eine gute Idee naumann aber funktioniert nicht wenn die Anzahl der Zeilen variabel ist, also es z.B. so aussieht (hätte vielleicht dazu sagen sollen dass es eine schleife ist.. sorry):


sb.append("<table>");

-hier beginnt die schleife-
sb.append("<tr>");
sb.append("<td>");
sb.append("<td>HIER DER PLACEHOLDER</td>");
sb.append("</tr>");
-schleife ende-

sb.append("</table>");

Any idea? Vielen Dank!

21.06.2006 - 15:10 Uhr

Hi,

ich muss meine Table im Codebehind erzeugen aus verschiedenen Gründen. In dieser Table soll pro Zeile ein (ASPNET) Input Field sein.

Ich füge dem Placeholder dynamisch neue Textboxes zu, das funktioniert solange der Placeholder im Designer deklariert ist. Jetzt müsste ich es nur schaffen den Placeholder im Codebehind zu deklarieren damit er an die richtige Stelle kommt.


sb.append("<table>");
sb.append("<tr>");
sb.append("<td>");
sb.append("<td>HIER DER PLACEHOLDER</td>");
sb.append("</tr>");
sb.append("</table>");

Das ist nur ein Beispiel den so könnte ich es auch im Designer zusammenbasteln.. geht jedoch bei mir nicht.. hab ich irgendeine Möglichkeit den Placeholder genau dort per Codebehind/Stringbuilder zu postieren?

Danke!

10.05.2006 - 14:24 Uhr

Hi,

ich entwickle gerade ein C# Programm.
Benutzer dieses Programmes können verschiedene Datensätze eingeben und sollen diese dann auch wieder abrufen können.

Pro User sinds wahrscheinlich ca. 100 Datensätze im Schnitt.

Wie speicher und hole ich diese Datensätze am besten ab? Also mit welcher Art von Speicherung? Datenbank? XML File? Die Datensätze müssen auch editierbar sein und die Datenbank muss out of the box kommen, also es läuft kein Datenbank Server auf den Clients.

Bin dankbar für jegliche Vorschläge!

12.04.2006 - 12:24 Uhr

Ja, hilft nichts. Das Problem ist dass ich erst aus der Links Tabelle selecte und dort gibts den Shop ja noch nicht, aber wenn ich erst über Shops gehe komm ich nicht gescheit an die Links ran, hab ich vielleicht ein falsches Database Design?

12.04.2006 - 12:05 Uhr

Hi,

ich probier jetzt seit einer Stunde rum aber komm nicht auf das gewünschte Ergebnis, ich hoffe ihr könnt mir helfen. Es geht um die Links Tabelle.

Ein Produkt hat mehrere Links zu Shops die dem User gehören. Also z.B. hat Produkt ASDF als Owner: Manfred. Manfred besitzt 5 Shops. Nun müssen 5 Links zu diesen Shops für dieses Produkt eingefplegt werden.

Was ich nun versuche ist alle Shops für dieses Produkt auszugeben auch wenn noch kein Link dafür existiert.

Im Moment siehts so aus:


SELECT links.linkURL as link, links.shopID as update_shopID, links.linkID, shops.shopName FROM links LEFT JOIN shops ON(shops.shopID = links.shopID) WHERE produxID='" + ID + "' AND linkOwner='"+this.UserID+"'"

Damit werden aber nur shops angezeigt für die ein Link existiert. Shops die noch kein Link haben werden erst gar nicht angezeigt. Vielen Dank für jegliche Hilfe!

Tabelle: shops
shopID,
shopName,
shopURL

Tabelle: user_shops (Relation zwischen User und Shop)
usID,
userID,
shopID

Tabelle: links
linkID,
produxID,
shopID,
linkURL,
linkOwner

Tabelle: Produx
pID,
pName,
pHersteller,
pLink,
pPreis,
pUser

06.04.2006 - 15:43 Uhr

Hallo,

ich hab 2 Tables:
Shops: ID, Name, URL.
User: ID, Name, ShopIDs.

In ShopIDs steht z.B. so ein String: "1|3|4|6|10|12";
Dieser String beinhaltet alle ShopIDs die dem User gehören. Ich Replace die "|" mit einem "OR ID=" um SQL Elemente zu erhalten. Nun bastel ich mir eine SQL Query zusammen die dann ca. so aussieht:


"SELECT * FROM Shops WHERE ID='1' OR ID='3' OR ID='4' OR ID='6'"; 
usw.

Bei vielen Shops wird diese Query wirklich ewig lang. Gibts einen Weg das besser zu machen?

Danke!

03.04.2006 - 15:02 Uhr

Ich hab hier ein simples DetailsView:


    <asp:DetailsView ID="DetailsView1" runat="server" CssClass="detailsView" GridLines="None" Height="50px" Width="125px" AutoGenerateRows="False" DataKeyNames="pID" DataSourceID="ObjectDataSource1" DefaultMode="Insert">
        <Fields>
            <asp:BoundField DataField="pID" HeaderText="pID" InsertVisible="False" ReadOnly="True"
                SortExpression="pID" />
            <asp:BoundField DataField="pName" HeaderText="Name" SortExpression="pName" />
            <asp:BoundField DataField="pHersteller" HeaderText="Hersteller" SortExpression="pHersteller" />
            <asp:BoundField DataField="pLink" HeaderText="Link" SortExpression="pLink" />
            <asp:BoundField DataField="pPreis" HeaderText="Preis" SortExpression="pPreis" />
            <asp:BoundField DataField="pUser" HeaderText="pUser" SortExpression="pUser" Visible="False" />
            <asp:CommandField ShowInsertButton="True" />
        </Fields>
    </asp:DetailsView>

Nun würde ich gerne ein weiteres Feld dem Update Prozess hinzufügen. Es geht um "pUser". Der User sieht dieses Feld nicht da es die UserID von ihm ist, die soll vom System hinzugefügt werden - deswegen ist es auf Visible=false gestellt.

Heißt also, wenn der User "Insert" klickt soll automatisch noch die UserID in die UpdateRoutine hinzugefügt werden, die les ich über User.Idendity(etc.) aus. Wie kann ich das bewerkstelligen?

Vielen Dank!

21.03.2006 - 10:50 Uhr

Leider finde ich im Internet kein ausführliches Tutorial über as DataGridView aber ich denke ich hab so langsam den Durchblick.

Ich weis nun wie man Daten anzeigen und editieren kann, wie kann man jedoch nur bestimmte Daten anzeigen?

Ich würde z.B. gerne mein DataGridView in Abhängigkeit von einem DropDownMenü füllen lassen. Das heißt ich wähle dort "example1" und das DataGridView wird mit der query SELECT * from A WHERE asf='1'; gefüllt.

Wie übergebe ich eine solche Query an das DataGridView?

Danke!

20.03.2006 - 13:06 Uhr

Ok hab nun nochmal alles neu gemacht, nun hat er auch gleich eine Leiste angelegt mit den Buttons für Update etc.

Das komische ist nun:
Ich trag was neues ein, klicke auf Save und er schreibt es korrekt in bin\Debug\sites.mdb hinein.

Er schreibt es jedoch nicht in die eigentliche mdb File im Projektverzeichnis Root. Somit wird scheinbar die Debug .mdb jedesmal überschrieben wenn ich das Programm neu kompiliere. Ist das normal?

20.03.2006 - 12:31 Uhr

Ja,

habs so probiert:


            sitesDataSet.sitesDataTable newChildRecords =
        (sitesDataSet.sitesDataTable)sitesDataSet.sites.GetChanges(DataRowState.Added);

            sitesTableAdapter1.Update(newChildRecords);

aber die Daten werden trotzdem nicht gesichert..

20.03.2006 - 11:45 Uhr

Hi,

ich such jetzt schon die ganze Zeit aber finde keine Lösung.

Ich hab eine Form mit einem DataGridView, diese DataGridView ist mit einer Access Datenbank verknüpft, somit enstand ein Dataset und ein TableAdapter.

Im Code steht im Moment nur:
this.sitesTableAdapter.Fill(this.sitesDataSet.sites);

Jetzt hab ich alle Editier Properties auf True gesetzt, das heißt ich kann neue Daten eingeben aber sie werden NIE gespeichert. Also wenn ich das Programm schließe und wieder öffne sind die Daten wieder weg.

Wie kann ich erreichen dass er die Daten speichert?

Danke!

17.03.2006 - 11:09 Uhr

Hi,

ich programmiere gerade ein neues C# Programm und würde dafür gerne eine Datenbank verwenden. Jedoch muss es eine sein die keine Installation von SQL Server o.ä. benötigt, also sie sollte direkt mit dem Programm mitgeliefert werden und muss nicht als Service laufen.

Was ist da am besten mit Visual Studio 2005? Geht das mit SQL Express oder muss dafür dann SQL Express Server auf dem System installiert sein?

Danke!

21.02.2006 - 13:44 Uhr

Ist es via ASP.NET möglich im IIS6 eine Webseite hinzuzufügen? Weis da jemand etwas? Also damit ich über ein selbstgeschriebenes Web Interface eine Webseite im IIS anlegen kann.

Danke!

08.02.2006 - 15:04 Uhr

Ich würde gern mal CommunityServer ausprobieren. Ich hab SQL Server 2005 am laufen mit Windows Authentication und SQL Server Authentication.

Nun hab ich den sa Account, den würd ich natürlich nur ungern für CommunityServer benutzen.

Könnte mir jemand kurz erklären wie ich einen zusätzlichen Benutzer für SQL Authentication einrichten kann der nur für CommunityServer gilt und auch nur Rechte für die CS Datenbank hat? Oder ist ein Application Benutzer nochmal was ganz anderes?

Oder einen Link zu einem SQL Server Tutorial? Komme von MySQL..

Danke!

30.01.2006 - 19:05 Uhr

Ja das Format ist kompatibel. Ich bin noch am überlegen, die built-in Localization Möglichkeiten von VS2005 sind auch nicht schlecht aber ich finde es ist bzgl. der Handhabung einfacher die Strings in einer Standard XML File zu haben.

Werd morgen nochmal beide Methoden ausprobieren..

30.01.2006 - 11:29 Uhr

Danke Eisbär, sieht gut aus!

Scheinbar ist das Format auch mit System.Globalization.CultureInfo.CurrentCulture.Name kompatibel, ich frag mich nur ob hier die Browser Sprache oder die OS Sprache als Grundlage genommen wird?

27.01.2006 - 10:21 Uhr

Hi,

das Problem ist, ich hab meine Strings für meine Webseite nicht nur im Designer - also in der eigentlichen .aspx File. Oft sind sie auch in der Codebehind etc.

Am besten wärs ich hätte zwei verschiedene URLs für Englisch/Deutsch und wähle darüber die passenden Strings aus.

Jemand eine Idee wie ich das am besten realisieren kann? Per XML File?

Danke!

(ASP.NET v2)

19.01.2006 - 14:45 Uhr

Original von vbprogger
wäre es nicht besser und schneller über eine SQL-Abfrage mit group by zu lösen?

Hm, kannst du da bitte ein bisschen konkreter werden?

19.01.2006 - 13:47 Uhr

Ich poste hier weil es im Prinzip ein Code Problem ist, kein Datenbankproblem.

Ich hab 3 Tabellen und lese folgendes aus:


        cmd.CommandText = "SELECT links.ID,links.SiteID,links.LinkTo,user.ID,user.Type,user.EMail,user.Reports,sites.Owner,sites.SiteLink FROM links,user,sites WHERE user.Type='Premium' AND links.SiteID=sites.ID AND user.Reports='1'";
        dr = cmd.ExecuteReader();

        while (dr.Read() == true)
        {
            
            LinkStatus = myFN.CheckHTMLSource(dr["LinkTo"].ToString(), dr["SiteLink"].ToString());

            if ((LinkStatus == "Missing!") || (LinkStatus == "Error!"))
            {
                if (!EMailList.Contains(dr["EMail"].ToString()))
                {
                EMailList.Add(dr["EMail"].ToString());                    
                }

            }

            SiteStatus.Add(LinkStatus);
            SiteStatusID.Add(dr["ID"].ToString());            
        }        
        dr.Close();

Jetzt lese ich damit z.B. 10 LinkIDs raus die unterschiedlichen Seiten gehören. Link 1-3 gehört Site1, Link 4-8 gehören Site2 und Link 9-10 Site3.

Genau das würd ich nun gerne zählen. Also 3 missing Links für Site1, 4 missing Links für Site2 und 2 missing Links für Site3.

Wie mach ich das am besten? Ich könnte noch die SiteID in einen mehrdimensionalen Array schreiben aber wie zähl ich es dort korrekt raus? Mir fehlt der technische Umsetzungsgedanke..

Vielen Dank!

15.12.2005 - 12:13 Uhr

Yea danke, mit Komma gehts.

15.12.2005 - 11:55 Uhr

Hallo,

ich hab einen String:


string myString = 1.40;

Nun würde ich diesen String gerne in eine Double Variable schreiben:


double myDouble = double.Parse(myString);

Leider kommt dabei 140 anstatt 1.40 raus, das gleiche passiert mit Convert.ToDouble;

Wie bekomm ich 1.40 hin? Danke!

06.12.2005 - 12:50 Uhr

Original von marsgk
Es wird sich halt LastAccess, Attributes, Size und LastWrite ändern, darum wird 4x Changed aufgerufen.
Verwende NotifyFilter ums einzuschränken.

Den verwende ich doch oben schon:
myWatcher.NotifyFilter = NotifyFilters.LastWrite;

06.12.2005 - 12:38 Uhr

Habs nun erstmal so gelöst:


string CurrentFile;


            if (File.Exists(e.FullPath))
            {                
                if (CurrentFile != e.FullPath.ToString())
                {
                    CurrentFile = e.FullPath.ToString();
                    FileStream file = new FileStream(AppPath + "\\change.log", FileMode.Append, FileAccess.Write);
                    StreamWriter sw = new StreamWriter(file);
                    sw.Write(e.ChangeType.ToString() + " :: " + e.FullPath.ToString() + "\n");
                    sw.Close();

                    string s = e.ChangeType.ToString() + " :: " + e.FullPath.ToString() + "\n";
                    AppendText(s);
                }
            }

06.12.2005 - 12:28 Uhr

Ok C:\ war ein ungünstiges Beispiel, sorry. Ist mit C:\mytestfolder* genauso. Die Logfile wird ins Programmdir geschrieben nicht in den "ToWatchOrdner"

Heißt also ich muss z.B. einen Array anlegen und checken ob es den Change von der File schon gab oder kann ich es irgendwie besser auf nur 1 echo begrenzen? Danke

06.12.2005 - 12:14 Uhr

        private void Form1_Load(object sender, EventArgs e)
        {
            myWatcher = new FileSystemWatcher(DirPath);
            myWatcher.EnableRaisingEvents = true;
            myWatcher.IncludeSubdirectories = true;
            myWatcher.NotifyFilter = NotifyFilters.LastWrite;
            myWatcher.Created += new FileSystemEventHandler(myWatcher_Created);
            myWatcher.Changed += new FileSystemEventHandler(myWatcher_Changed);
            //myWatcher.Deleted += new FileSystemEventHandler(myWatcher_Deleted);
            //myWatcher.Renamed += new RenamedEventHandler(myWatcher_Renamed); 
            notifyFolder.DoubleClick += new EventHandler(OnClick);
        }

Hier deklariere ich mein Event: myWatcher.Changed += new FileSystemEventHandler(myWatcher_Changed);


        //Changed Event
        protected void myWatcher_Changed(object sender, FileSystemEventArgs e)
        {
            if (File.Exists(e.FullPath))
            {
                FileStream file = new FileStream(AppPath + "\\change.log", FileMode.Append, FileAccess.Write);
                StreamWriter sw = new StreamWriter(file);
                sw.Write(e.ChangeType.ToString() + " :: " + e.FullPath.ToString() + "\n");
                sw.Close();

                string s = e.ChangeType.ToString() + " :: " + e.FullPath.ToString() + "\n";
                AppendText(s);
            }
        }

Das passiert wenn eine File "changed wird".

Das Problem ist jetzt, angenommen der Pfad ist C:\ und ich ersetze C:\test.txt(1kb) mit einer test.txt(2kb) - einfach im windows explorer kopiert und überschreiben gewählt. Jetzt wird 4x in die Textbox geschrieben C:\test.txt changed.

Warum 4x?


myWatcher.Created += new FileSystemEventHandler(myWatcher_Created);

funktioniert ohne Probleme, da krieg ich nur eine Meldung aber changed wirft 4..
Danke!

30.11.2005 - 18:28 Uhr

Original von progger
Im Code darfst du eh nicht 9**,20 schreiben. Da muss man immer 9.**20 schreiben. Aber ich denk mal, du hast das nur im Forum so geschrieben, weil der Compiler sonst eh meckert 😉

Ja stimmt 😮

Danke Leute, mit der Lösung in dem Thread oben funktionierts!

30.11.2005 - 18:00 Uhr

double sum = 9,20;
string sum = sum.ToString();

Wie bekommt man 9.20 anstatt of 9,20?

Hab schon hier geschaut: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdecimalclasstostringtopic.asp aber nichts passendes gefunden..

Danke

17.11.2005 - 11:28 Uhr

Sorry, ich versteh nicht ganz wie ich die Funktion anwende. Also, konkret:
Ich bin auf der Reviews Seite auf der alle Reviews aufgelistet werden:


cmd.Connection = cn;        

cmd.CommandText = "SELECT * from reiews WHERE Cat="+CatID+"";
      using (dr = cmd.ExecuteReader())
        {
          while (dr.Read() == true)
          {
..
<td>"+ dr["ReviewName"].toString()+"</td>
<td><a href=comments.aspx?ID="+dr["ReviewID"].ToStriing()+"Comments (HIER soll der comments count für das gerade ausgelesene REVIEW stehn)"</td>
..
          }
        }

Mein Problem ist, ich kann ja nicht zwei reader gleichzeitig laufen lassen damit ich an die Stelle z.B. eine seperate COUNT Query einfüge und dynamisch ist es auch..

Vielen Dank!

16.11.2005 - 20:58 Uhr

Ich hab eine Seite die mit einem DataReader verschiedene Reviews ausliest.

Für jedes Review eine Tabellenzeile (td).
Nun würd ich gern noch direkt auf dieser Seite Anzeigen wieviel Kommentare es für jedes einzelne Review gibt.

Die Query sieht z.B. so aus:
(zur demonstration vereinfacht)


cmd.Connection = cn;        

cmd.CommandText = "SELECT * from comments WHERE ReviewID="+ReviewID+"";
      using (dr = cmd.ExecuteReader())
        {
          while (dr.Read() == true)
          {
           ..auslesevorgang..
          }
        }

Eine eigene Query vorher zu schreiben bringt ja nichts weil ich den COUNT Wert des jeweiligen Reviews in der Schleife selbst brauche.

Jemand eine Idee? Danke!

16.11.2005 - 12:20 Uhr

z.B. Query:


cmd.CommandText = "SELECT * FROM sites,user WHERE sites.Trade='1' AND PR='"+PR+"' AND sites.Owner=User.ID ORDER BY sites.TradeDate DESC";
dr = cmd.ExecuteReader() 

Jetzt hab ich in sites und in user ein Field Namens ID.
Mit dem Reader komm ich so dr["ID"].ToString() nur an das ID field von sites heran, nicht aber von user.

"sites.ID" geht auch nicht. Jemand eine Idee?

Danke

14.11.2005 - 11:24 Uhr

Ok stimmt, 8o vielen dank!