das: GridView1.DataBind();
kannst du in der methode weglassen
Hi
Ich hab mir einen DataGrid im C#-Quellcode erstell und will ihn nun mit einem Linkbutton füllen.
Im ASP.NET Code nehm ich sonst immer "DataBinder.Eval(Container.DataItem, "...")", doch welches Objekt ist der Container im C# Quellcode?
Danke
da hast du recht, ich bin was websachen angeht ziemlich an php gewöhnt (hab ein eigenes cms geschrieben - toendaCMS) aber durch viel entwicklung mit c++, c, c# und vb hab ichs doch geschnallt, trotzdem ist es schon ziemlich gewöhnungsbedürftig ... aber dafür, wenn mans geschnallt hat, einfachen und leistungsfähiger (und durch c# spassiger) ...
die ganze anwendung ist auf mehrere ascx dateien die über eine aspx gesteuert werden verteilt. das problem war das ich in 3 dieser formularbasierten ascx dateien noch ein paar iritierende dinge im page_load geladen hab. jetzt hab ich alle buttons auf events gestellt und dadurch klappt es jetzt.
juhuu ... jetzt klappts wieder. so langsam ist die umstellung auf .NET 2.0 funktionstüchtig ...
button:
<asp:Button CssClass="ready" ID="btnApply" OnClick="btnApply_Click" runat="server" Text="Anwenden" />
method:
protected void btnApply_Click(object sender, EventArgs e)
{
fillTreeList(month.SelectedValue, year.SelectedValue);
}
control:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Sidebar.ascx.cs" Inherits="Sidebar" EnableViewState="true" %>
das die seite komplett neugeladen werden muss ist schon klar (ich hab vor ein paar jahren mit php angefangen) nur hat meine app was völlig falsches getan.
bei mir war alles so wie ihr es gesagt habt, nur enableviewstate war nicht auf true ...
(ps: meine app ist mit c#)
modular ist das ganze aufgebaut, problem ist nur das der button im browser nicht die ihm zugewiesene OnClick="btnApply_Click" Eventmethode ausführt, sonder die ganze seite wieder anschickt ... nix passiert - ausserdem werden die selected values aus den dropdownboxen nicht ausgelesen
ja, das stimmt schon, aber ... also ich erklärs mal genauer:
ich hab nen tree der bestimmte daten aus dem aktuellen monat anzeigt. aber ich kann mit 2 dropdown boxen den monat und das jahr wechseln, dazu muss ich nur einen button der darunterliegt klicken und schon wird der tree verändert.
hab ich jetzt aber nur ein formular, wird die ganze page abgeschickt, der tree wird nicht richtig verändert, die daten im content wechseln zu ner ganz falschen seite und und und ...
wo liegt der fehler?
.NET meckert leider bei mehr als einem serverseitigem Formular.
Ich werd's wohl mit ein paar Parametern stopfen und gucken ob ichs hinbekomme.
Vielleicht gibts aber doch noch ne andere Lösung ...
Also neues Problem.
Mei Projekt ist so aufgebaut: Links eine Seitenleiste mit treeview, rechts content zu einzelnen punkten.
mit .NET 1.0 hatte ich ein framebasiertes layout und konnte beide seiten mit einzelnen serverseitigen forms abschicken und so die seitenleiste (aktualisiert nach monats ansicht) unabhängig von dem rechts angezeigten serverseitigen form abschicken.
jetzt hab ich alles auf eine masterpage umgestellt und will aber die funktionalität des updatebarem treeview beibehalten ohne das der rechts angezeigte content (ist auch ein formular) mitabgeschickt wird.
wie kann ich das realisieren?
ne, der fehler lag am AutoEventWireup, das war auf false ...
Ich arbeite zurzeit an einem ASP.NET 2.0 Projekt und habe gerade alles auf die Masterpage umgestellt. Jetzt habe ich das Problem das für die einzelnen Inhaltsseiten und die UserControls (.ascx) kein Page_Load mehr ausgeführt wird.
Was muss ich tun um das wiederzubekommen?
Wie funktioniert das Page_Load mit der Masterpage?
gibt es den hier niemanden der das kann?
"Aktualisieren erfordert einen gültigen UpdateCommand, wenn eine DataRow-Auflistung mit modifizierten Zeilen weitergegeben wird."
das bekomme ich als antwort ...
Hab inzwischen mit dem CommandBuilder probiert - kein Erfolg, da er ein SELECT String braucht und ich in der UpdateDataSet() Methode dieses nicht mehr zur Verfügung habe.
Habe dann mir aus dem DataSet dynamisch ein UPDATE String erstellt und mit ExecuteNonQuery ausgeführt - klar klappt es, aber damals mit dem Recordset konnte man es auch ohne SQL Code machen. Das will ich wieder haben.
Einen weiteren SQL Parser der die Commandos baut brauche ich nicht.
Also, was kann man machen?
Hi
ASP.NET Problem!
Ich habe ein DataSet und ändere den Wert einer Row darin:
DataRow dr = dsData.Tables[0].Rows[0];
dr["id"] = "44";
dsData.AcceptChanges();
Ich schiebe es nun mit folgendem Befehl zurück:
SqlCommand oCMD = m_oSQLCn.CreateCommand();
SqlDataAdapter oSDA = new SqlDataAdapter(oCMD);
int nResult = oSDA.Update(dsData);
Es wird mir zwar im DataGridView angezeigt aber nicht in die Datenbank zurückgeschrieben. Was hab ich da vergessen?
hat alles hingehauen ... danke
in diesem fall ist es aber kein assembly sondern eine .cs datei die im projekt eingebunden ist und dort direkt benutz werden soll.
an der klasse ist auch alles in ordnung, habe sie schon als "ohne namespace" - klasse direkt von page abgeleitet und da funktioniert auch alles.
obwohl bei beiden varianten alles im objekt explorer erscheint.
zuerst hatte ich es ja auch ohne namespace und ohne basesystem gemacht und due dbsystem von page ableiten lassen. das hat auch funktioniert. jetzt wollte ich es halt trennen und erweitern
da sagt er auch "ist nich" ...
visual studio 2005 (8.0), hatte vorher sharpdevelop.
OK, ich hab die System.Data.SqlClient aus den Referencen genommen (aber die using drinnen gelassen) und die dll baut ohne probleme.
aber im webprojekt ist die referenc nicht drin ...
er sagt mir folgendes:
Error 1 The type 'System.Data.SqlClient.SqlConnection' exists in both 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll' and 'c:\Programme\Microsoft Visual Studio 8\Common7\IDE\PublicAssemblies\System.Data.SqlClient.dll' D:\Projekte\C#\DBServer\DBServer\Class1.cs 147 18 DBServer
ja, deshalb hab ich geschrieben das ich auf die methoden innnerhalb der DBSystem Klasse in der BaseSystem Klasse zugreifen kann.
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Data;
using DBLayer;
nein hab ich nicht. die klassen sind alle public.
ich möchte ja nur den code aufteilen. aber selbst wenn ich den namespace weglasse und dann also folgende dateien im projekt habe:
Ich habe einen eigenen Namespace in ASP.NET mit C# geschrieben und möchte ihn nun in meinen (von Page abgeleiteten) Klasse verwenden. Soweit ich weiß muss ich ja nur "using MeinNamespace;" schreiben und sollte von den darin enthaltenen Klassen Objekte erstellen können, da die datei mit dem entsprechenden Namespace in meinem Projekt enthalten ist.
Leider sagt mir der Kompiler dauernd das: "CS0246: Der Typ- oder Namespacename ELADBLayer konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)".
Auch wenn ich meinem Projekt einen eigenen Default Namespace gebe und den dann so anspreche: "using MeinProjekt.MeinNamespace;" klappt es nicht.
Was muss ich tun?
Ich habe einen eigenen Namespace in ASP.NET mit C# geschrieben und möchte ihn nun in meinen (von Page abgeleiteten) Klasse verwenden. Soweit ich weiß muss ich ja nur "using MeinNamespace;" schreiben und sollte von den darin enthaltenen Klassen Objekte erstellen können, da die datei mit dem entsprechenden Namespace in meinem Projekt enthalten ist.
Leider sagt mir der Kompiler dauernd das: "CS0246: Der Typ- oder Namespacename ELADBLayer konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)".
Auch wenn ich meinem Projekt einen eigenen Default Namespace gebe und den dann so anspreche: "using MeinProjekt.MeinNamespace;" klappt es nicht.
Was muss ich tun?