sawMedlem sedan mars 20011 880 inlägg Jag har börjat att titta lite på Ajax, och fått lite att fungera men...
Jag har en label, som inte ligge i en UpdatePanel. Via codebehind so ville
jag skriva lite text (dynamiskt). Jag kan se labelen via intilenze(eller vad det
nu heter) men om jag skriver in lite text till labelen, så får jag svaret att
labelen inte tillhör den aktuella kontexten.
Hur löser man det???
VideMedlem sedan dec. 19998 577 inlägg Kan du visa lite kod?
Rent generellt så måste saker som ajax skall updatera dynamiskt ligga i en updatepanel.
sawMedlem sedan mars 20011 880 inlägg Ok här kommer lite:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="info" runat="server" Style="position: relative" Text="" Width="53px"></asp:Label>
<asp:GridView ID="GridView1" runat="server"
//längre ner
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="Id"
//och
<asp:AccessDataSource ID="AccessDataSourceGrid"
//och
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
//i codebehind
sql = "SELECT Count(klassKamrater.Id) AS AntalförId FROM klassKamrater;";
info.Text = "Antal registrerade klasskamrater: " + Webbutill.OleDbCount(sql,
DBConn) + " st";
Skall sägas att innan jag försökte konvertera detta till AJAX, så fungerade allt
bra.
Efter mycket krabb så delitade jag filen(default.aspx) och började om ifrån
början, men jag fasnar på exact samma punkt.
OBS
De koder som jag visar, är bara liate granna, det skulle ta för stort utrymme
för att visa allt.
VideMedlem sedan dec. 19998 577 inlägg Får inte ut så mycket av koden, men jag kan tillägga att om du vill uppdatera en UpdatePanel ifrån codebehind så anropar du UpdatePanel.Update() där du vill göra det.
sawMedlem sedan mars 20011 880 inlägg Tack för tipset, men fortfarande varför kan jag inte komma åt t ex labellen info
ifrån codebehind?
sawMedlem sedan mars 20011 880 inlägg Nu åkte jag på pumpen igen.
UpdatePanel.Update();
//error:
Error 1 En objektreferens krävs för det icke-statiska fältet,
metoden eller egenskapen System.Web.UI.UpdatePanel.Update()
C:\Inetpub\wwwroot\KlassKamrater\Default.aspx.cs 36 9 C:\...\KlassKamrater\
Är det inte en using som jag behöver här??
emissionMedlem sedan dec. 19996 721 inlägg Nej, men du ska referera till instansen, inte till klassen. I ditt fall är det alltså
UpdatePanel1.Update()
sawMedlem sedan mars 20011 880 inlägg Jag gör ju så här:
protected void DetailsView1_ItemDeleted(object sender,
DetailsViewDeletedEventArgs e)
{
UpdatePanel.Update();
}
Är det inte så ni menar?
VideMedlem sedan dec. 19998 577 inlägg Nej, du måste använda instansen, och den har du döpt till UpdatePanel1 enligt din kod längst upp:
protected void DetailsView1_ItemDeleted(object sender,
DetailsViewDeletedEventArgs e)
{
info.Text = "Updaterar... ";
UpdatePanel1.Update();
}
sawMedlem sedan mars 20011 880 inlägg Givetvis Vide, jag såg inte att jag skrev fel.
Och nu har vi kommit till pudlens kärna:
Error 1 Namnet UpdatePanel1 finns inte i den aktuella kontexten
C:\Inetpub\wwwroot\KlassKamrater\Default.aspx.cs 41 9
C:\...\KlassKamrater\
Jag är alltså tillbaka till min ursprungliga fråga, jag kan alltså tydligen inte anropa en kontroll ifrån kodebehind.
Jag lägger upp min default.aspx som en textfi och hoppas att någon kan hitta
någon dummhet som jag har gjort. ;) l
VideMedlem sedan dec. 19998 577 inlägg Kan du lägga upp .cs-filen också där själva anropet är?
sawMedlem sedan mars 20011 880 inlägg I och för sig så tror jag inte att det hjälper, men bara för att det är du Vide ;)
Jag har bortkommenterat det mesta, och jag har inte mycket koder där...
VideMedlem sedan dec. 19998 577 inlägg Men alltså, i Default.aspx finns ju inget Label-objekt som heter info (enligt det du bifogade), eller har du bara missat att visa det i filen?
sawMedlem sedan mars 20011 880 inlägg Nej jag har taget bort den eftersom jag tröttnade på att den inte fungerade.