Suck! Man glömmer fort.... lägg in enn if(ispostback).Där lägger du in att datagriden skall bindas om. hmm ok... nu har jag laggt in den så här Japp detta gör att Data listen bara binds förstå gången sidan visas. Det är nog bara jag som är korkad, men skulle jag inte lägga in en ifsats där listan binds om? Jag får det inte att fungera. Inte riktigt säker på att jag förstår vilka problem som du har här men jag skulle nog göra nåt i den här stilen... Det är så jag har gjort! Tycker sidan utstrålar lite: "Välkommen hackers med er 'SQL injection' attacker"... Ja Andreas! det är väl möjligt. Efter en snabb koll på koden så tycker jag att det borde funka... Jepp, den kommer till dataBind. Och det är det som gör detta så mysko. Typiskt... Jag har detta fenomen på hela siten..... Jag msåte ha gjort något basic felJag kryper till Korset
Halojj!
Har ett litet problem med min datagrid. Jag har en delet knapp i datagriden. Den fungera som den ska men jag kan inte få datagriden att uppdatera sig. Har kunnat det men glömt bort det. Dvs jag klickar på delete i datagriden. i metoden Delete så avslutar jag på att kalla på den metod som läser in värderna till datagriden. Jag misstänker att det har med autopostback funktionen men alla mina försök har misslyckats.
Så hur gör jag för att lösa detta.
/TyronneSv: Jag kryper till Korset
Sv:Jag kryper till Korset
så här ser det ut
<code>
private void Page_Load(object sender, System.EventArgs e)
{
if(Page.IsPostBack == false)
{
GetSub(1);
}
}
public void GetSub(int ID)
{
// Connection - string
Database.Databaselogic dbCon = new Databaselogic();
string ConnectionString= dbCon.ConnectionString;
// Initsierar databaskopplingen med SQL-fråga
OleDbConnection con = new OleDbConnection(ConnectionString);
string SQL="Select a.*,b.Subdesc from tblSubscribe a, tblSubsettings b where b.Subtypeid = a.Subtype and custID=" + ID;
// Initsierar databaskopplingen med SQL-fråga
con.Open();
// Skapar DataSettet som skall innehålla resultatatet från DB
DataSet ds = new DataSet();
OleDbDataAdapter sqlAdapt = new OleDbDataAdapter(SQL,con);
sqlAdapt.Fill(ds);
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
{
dbgListAll.DataSource = ds;
dbgListAll.DataKeyField="subsid";
dbgListAll.DataBind();
}
else
Label1.Visible=true;
}
}
private void EditSubs()
{
//Min update kod
// Kallar på datagriden för att visa uppdateringen
GetSub(1);
}</code>
så var skall jag lägga in ditt förslag.
/TyronneSv: Jag kryper till Korset
<code>
dbgListAll.DataSource = ds;
dbgListAll.DataKeyField="subsid";
if(Page.IsPostBack == false)
dbgListAll.DataBind();
</code>
Men det hjälper inte. Den uppdateras fortfarande inte
/TyronneSv: Jag kryper till Korset
Eftersom du sätter if(Page.IsPostBack == <b>false</b>) så kommer du ju alldrig binda om den vid en postback.
Skippa if-satsen skall du se att det funkarSv:Jag kryper till Korset
Jag missförstår nog dig. Kan du visa i min kod hur du vill att jag skall skriva
/TyronneSv: Jag kryper till Korset
Jag har kollat i böcker och andra forum och jag har gjort som det står men jag får det ändå inte att fungera.
Jag har i page_Load
If(!Page.Ispostback)
Så kallar jag på min metod för ladda datagriden
Sedan så kallar jag på den från olika metoder. Precis som det står, så vad gör jag galet?
Om jag klickar på Refresh(F5) så uppdateras listan. Sv:Jag kryper till Korset
I PageLoad har jag en koll så att det inte är postback (VB: "If Not Page.IsPostBack Then"), innanför denna if-sats skulle jag anropa en funktion som hanterar laddningen av min datagrid.
Vid de tillfällen "nåt händer" som påverkar innehållet i datagriden (delete av en post, tillägg av en post m.m.) anropar jag återigen funktionen som fyller datagriden från databasen. Alltså om det ska tas bort en post från databasen så tar jag först bort den, därefter anropar jag funktionen som fyller datagriden med ny information.
I funktionen som fyller datagriden har jag ingen koll på om det är postback eller inte utan den kontrollen har jag bara i pageload.
Är det så du har gjort? Har du testat att stega igenom dina funktioner så att du ser vad som exekveras och vad som inte exekveraras när du kör din sida??Sv: Jag kryper till Korset
Och jag har stegat igenom för att se vad den gör. och (då enl mitt sätt att se på det) så gör den så. Men jag skickar ett utdrag ur min kod så får du se.
<code>
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
if(!Page.IsPostBack)
{
pnlNewSubs.Visible = false;
BindGrid();
}
}
public void BindGrid()
{
// Connection - string
Database.Databaselogic dbCon = new Databaselogic();
string ConnectionString= dbCon.ConnectionString;
string SQL = "Select * from tblSubsettings";;
// Initsierar databaskopplingen med SQL-fråga
OleDbConnection con = new OleDbConnection(ConnectionString);
con.Open();
// Skapar DataSettet som skall innehålla resultatatet från DB
DataSet ds = new DataSet();
OleDbDataAdapter sqlAdapt = new OleDbDataAdapter(SQL,con);
sqlAdapt.Fill(ds);
dbgListAll.DataSource = ds;
dbgListAll.DataBind();
Label2.Text= "Antal poster " + dbgListAll.Items.Count;
Session["ds"] = ds;
}
public void SaveNewSubscription()
{
// Connection - string
Database.Databaselogic dbCon = new Databaselogic();
string ConnectionString= dbCon.ConnectionString;
string SQL = "INSERT INTO tblSubSettings (subdesc,subleght,SubAmount,subCode,MailHeader,Fileattachment)";
SQL = SQL + " VALUES ";
SQL = SQL + "('" + txtDesc.Text + "',";
SQL = SQL + "" + txtPeriod.Text + ",";
SQL = SQL + "'" + txtCost.Text.Trim() + "',";
SQL = SQL + "'" + txtSubCode.Text + "',";
SQL = SQL + "'Tipskungen Prenumerationsservice',";
SQL = SQL + "'ingen')";
Debug.Write(SQL);
OleDbConnection con = new OleDbConnection(ConnectionString);
con.Open();
OleDbCommand cmd = con.CreateCommand();
cmd.CommandText = SQL;
int Affected = cmd.ExecuteNonQuery();
if (Affected == 1)
{
BindGrid();
}
}
</code>
enl mig så är det rätt, men jag har ju fel eftersom den inte fungerar.
/TyronneSv:Jag kryper till Korset
Sv: Jag kryper till Korset
Men att i detta läget lägga in en funtion som formaterar om söksträngen är ju inte lösningen på detta problemet. :-)
Men eftersom du har kollat igenom ärendet, har du inga förslag på hur jag löser detta problemet. Det är säkert en skitfel, men har du några tipsså skulle jag uppskatta det.
/TyronneSv:Jag kryper till Korset
Du sa tidigare att du stegat igenom koden. Kom den då så långt som till dbgListAll.DataBind(); efter det att du gått igenom din funktion med namnet SaveNewSubscription?
Frågan från mig är alltså, kommer du så långt i koden så att den kör databind på datagridden igen efter det att du lagt till en ny post i databasen?
Debuggern och breakpoints har många gånger varit min bästa vän när koden inte har betett sig så som jag tyckt att den borde bete sig...Sv: Jag kryper till Korset
jag har stegat igenom hela koden flera gånger. Den uppdateras bara om jag gör en refresh F5
/TyronneSv:Jag kryper till Korset
/Tyronne