08. november 2004 - 23:30
Der er
22 kommentarer
opdatering af datagrid
Jeg har en c# side med en datagrid, hvor man kan tilføje nye felter til datagriden og slette dem og det virker også fint, så længe jeg er inde på siden, men hvis jeg så går ind på en anden side på min hjemmeside og går tilbage til min side med datagriden, så er de felter væk, som jeg lige har tilføjet, men de er godt nok i min access database. Hvis jeg så lukker explorer ned med min hjemmeside og derefter starter explorer op og går ind på min hjemmeside, så er de felter der godt nok, som jeg tilføjede. Hvordan gør jeg så selv om jeg går ind på en anden side på min hjemmeside og går tilbage til siden med datagriden, at de ændringer som jeg har tilføjet også er der? Min kode ser således ud: private void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { BindGrid(); } } private void BindGrid() { DataGrid1.DataSource = selectEmne(); DataGrid1.DataBind(); } selectEmne er et dataset metode.
Annonceindlæg fra Computerworld it-jobbank
09. november 2004 - 00:23
#1
private void Page_Load(object sender, System.EventArgs e) { DataGrid1.DataSource = selectEmne(); if (!IsPostBack) { BindGrid(); } } private void BindGrid() { DataGrid1.DataBind(); } hvis du vil undgå at sætte datasource hver gane..altså kalde database eller andet, skal du gemme dit dataset i en session, viewstate variabel eller cache...men jeg mener at så længe din database performer, så lad basen gøre det den er bedst til..nemlig at levere data /Mc
09. november 2004 - 00:39
#2
Men det hjælper ikke rigtig på mid opdaterings problem.
09. november 2004 - 00:42
#3
så er jeg bange for jeg ikke forstår spørgsmålet :( ? eller jeg skal se noget mere kode
09. november 2004 - 16:55
#4
Det kan også være mig der ikke forstod, hvad du mente med session, viewstate:) Her er min selectEmne metode, og hvordan mener du jeg skal lave den? public System.Data.DataSet selectEmne() { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb"); System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString); string queryString = "SELECT [Emne].* FROM [Emne]"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection; System.Data.IDbDataAdapter dataAdapter = new System.Data.OleDb.OleDbDataAdapter(); dataAdapter.SelectCommand = dbCommand; System.Data.DataSet dataSet = new System.Data.DataSet(); dataAdapter.Fill(dataSet); return dataSet; }
09. november 2004 - 17:36
#5
når du siger "går tilbage til siden" ...bruger du så browserens tilbage knap eller ?
09. november 2004 - 17:48
#6
nej, det er et link på min side som jeg trykker på, hvorefter jeg kommer til en ny side på min hjemmeside.
09. november 2004 - 17:49
#7
Eller det er sådan nogle dropdown menuer, som jeg har på min side, som er et link til en ny side på hjemmesiden.
09. november 2004 - 18:00
#8
altså bruger trykker på side1.aspx...tilføjer noget....går til side2.aspx...trykker på et link og tilbage på side1.aspx ?
09. november 2004 - 18:09
#9
hmm er altså lidt mystisk..og jeg må indrømme jeg ikke lige kan se hvad der går galt uden jeg får mere kode :-(
09. november 2004 - 20:01
#10
Hvad kode vil du gerne se?
09. november 2004 - 20:06
#11
hmmm faktisk der hvor du tilføjer data til db, din page load, din binding metode...
09. november 2004 - 20:11
#12
Jeg forstår ikke helt, men her er min tilføj knap, som tiføjer et emne til databasen og min page load var i det første kode, som jeg lagde her ind: public void Button2_Click(object sender, EventArgs e) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb"); System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString); string queryString = "INSERT INTO Emne (Navn)" + " VALUES (\"ny\")"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection; dbConnection.Open(); dbCommand.ExecuteNonQuery(); dbConnection.Close(); DataGrid1.EditItemIndex = -1; BindGrid(); }
09. november 2004 - 20:16
#13
og din page load ser ud som kommentar: 09/11-2004 00:23:33
09. november 2004 - 20:20
#14
ja, den så sådan ud, men så prøvede jeg at ændre til det du sagde, så nu ser den sådan her ud: private void Page_Load(object sender, System.EventArgs e) { DataGrid1.DataSource = selectEmne(); if (!IsPostBack) { BindGrid(); } }
09. november 2004 - 20:25
#15
DataGrid1.EditItemIndex = -1; DataGrid1.DataSource = selectEmne(); BindGrid();
09. november 2004 - 20:41
#16
nej, det virker stadig ikke, men det mærkelige er, at for at komme ind på siden, skal man logge ind og hvis jeg logger ud og logger ind igen, så bliver den opdateret.
09. november 2004 - 20:52
#17
der må være noget kode du ikke viser mig...for det kode som er vist her..det virker..100%
09. november 2004 - 20:56
#18
det eneste kode jeg har tilbage er min slet og rediger på datagriden, men de burde da ikke have nogen betydning?
09. november 2004 - 21:06
#19
Nu har prøvet at skære al den overflødige kode fra og så ser hele koden sådan her ud og med det her kode har jeg stadig det samme problem: <%@ Page Language="C#" %> <script runat="server"> private int emneid; private void Page_Load(object sender, System.EventArgs e) { DataGrid1.DataSource = selectEmne(); if (!IsPostBack) { BindGrid(); } } private void BindGrid() { DataGrid1.DataBind(); } public System.Data.IDataReader selectEmne() { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb"); System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString); string queryString = "SELECT [Emne].* FROM [Emne]"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection; dbConnection.Open(); System.Data.IDataReader dataReader = dbCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection); return dataReader; } void Button1_Click(object sender, EventArgs e) { string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb"); System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString); string queryString = "INSERT INTO Emne (Navn)" + " VALUES (\"ny\")"; System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); dbCommand.CommandText = queryString; dbCommand.Connection = dbConnection; dbConnection.Open(); dbCommand.ExecuteNonQuery(); dbConnection.Close(); DataGrid1.EditItemIndex = -1; DataGrid1.DataSource = selectEmne(); BindGrid(); } </script> <html> <head> </head> <body> <form runat="server"> <p> <asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundColumn DataField="Navn" HeaderText="Navn"></asp:BoundColumn> </Columns> </asp:DataGrid> </p> <p> <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button> </p> <!-- Insert content here --> </form> </body> </html>
09. november 2004 - 21:59
#20
hmm this one baffles me :(
13. november 2004 - 18:25
#21
er du der krestionsen ?
14. november 2004 - 10:33
#22
yes, nu er jeg.
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.