Avatar billede krestionsen Nybegynder
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.
Avatar billede mccannon Nybegynder
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
Avatar billede krestionsen Nybegynder
09. november 2004 - 00:39 #2
Men det hjælper ikke rigtig på mid opdaterings problem.
Avatar billede mccannon Nybegynder
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
Avatar billede krestionsen Nybegynder
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;
          }
Avatar billede mccannon Nybegynder
09. november 2004 - 17:36 #5
når du siger "går tilbage til siden" ...bruger du så browserens tilbage knap eller ?
Avatar billede krestionsen Nybegynder
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.
Avatar billede krestionsen Nybegynder
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.
Avatar billede mccannon Nybegynder
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 ?
Avatar billede mccannon Nybegynder
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 :-(
Avatar billede krestionsen Nybegynder
09. november 2004 - 20:01 #10
Hvad kode vil du gerne se?
Avatar billede mccannon Nybegynder
09. november 2004 - 20:06 #11
hmmm faktisk der hvor du tilføjer data til db, din page load, din binding metode...
Avatar billede krestionsen Nybegynder
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();
        }
Avatar billede mccannon Nybegynder
09. november 2004 - 20:16 #13
og din page load ser ud som kommentar: 09/11-2004 00:23:33
Avatar billede krestionsen Nybegynder
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();
   
              }
          }
Avatar billede mccannon Nybegynder
09. november 2004 - 20:25 #15
DataGrid1.EditItemIndex = -1;
DataGrid1.DataSource = selectEmne();
BindGrid();
Avatar billede krestionsen Nybegynder
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.
Avatar billede mccannon Nybegynder
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%
Avatar billede krestionsen Nybegynder
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?
Avatar billede krestionsen Nybegynder
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>
Avatar billede mccannon Nybegynder
09. november 2004 - 21:59 #20
hmm this one baffles me :(
Avatar billede snepnet Nybegynder
13. november 2004 - 18:25 #21
er du der krestionsen ?
Avatar billede krestionsen Nybegynder
14. november 2004 - 10:33 #22
yes, nu er jeg.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester