Announcement

Collapse
No announcement yet.

Gridview: Click auf Boundfield möglich?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Originally posted by vadym voytas View Post
    Ganz einfach.
    Beim Klich finde sofort DataKey "SkillGroup", dan über SkillGroup finde RheinfolgeNummer,
    Und dann Tausche sofort die letzte Rheinfolge nummer (von dem neuien Datensatzt) aud diese RheinfolgeNummer, (Tauschfunktion hast du). Und dann tausche rekursiv oder in Schleife die weiterstehende Rheinfolgenummern, bis du beim letzten (neuen ) Rheinfolgenummer bist.
    Hmm ok aber an welche Stelle wird das insertTemplate angezeigt zum eintragen einer neuen Groupennamen?


    Hier meine Funktion die beim Click auf New Group unter dem Header das EditFenster aktiviert und überschreibt den Text des ersten Element, also statt "bearbeiten" kommt "insert", anschliessend wird abgefragt welchen wert das control enthält entweder bearbeiten oder insert, in meinem Fall insert

    Code:
    protected void btnAdd_Click(object sender, EventArgs e)
            {
                DataTable dt = GroupAdapter.Fetch();
                
                // Here we'll add a blank row to the returned DataTable
                DataRow dr = dt.NewRow();
                dt.Rows.InsertAt(dr, 0);
                //Creating the first row of GridView to be Editable
                GridView1.EditIndex = 0;
                GridView1.DataSource = dt;
                GridView1.DataBind();
                //Changing the Text for Inserting a New Record
                ((LinkButton)GridView1.Rows[0].Cells[0].Controls[0]).Text = "Insert";
            }




    So wenn ich im Add den GridView1.EditIndex = 0; sobald ich den wert verändere so dass es in den selben Zeile angezeigt werden soll wie die neue Zeile spinnt es total.

    Hier hole ich mir die Skillgroup
    Code:
    int index = Convert.ToInt32(e.CommandArgument);
    Hier seine reihenfolgeNummer
    Code:
    int intUnitID = Convert.ToInt32(data.Values["rank_order"]);
    diese reihenfolgeNummer übergebe ich der funktion zum erzeugen einer neuen Zeile

    Code:
    Add(intUnitID);
    Hier vertausche ich die ReihenfolgeNummer der Zeile unter dem neuem
    Code:
    GroupAdapter.Insert(((TextBox)GridView1.Rows[0].Cells[2].Controls[0]).Text.ToString(), ++index);
                        GroupAdapter.Update(Convert.ToInt32(GridView1.DataKeys[index].Values[0].ToString()), index + 1);

    Dennoch funzt das nicht zum teufel

    Was ich eigentlich nur möchte ist einen einfachen Weg, beliebig an einer Porsition eine neue Zeile hinzuzufügen. Wenn die neue Zeile hinzugefügt wird, würde ich die neue Zeile direkt in den Bearbeitungsmodus wechseln möchten, es ermöglicht dem Benutzer, Daten direkt in die neue Zeile eingeben.


    1. Es muss eine neue (leere Einlage) Datensatz in der Datenbank-Tabelle.
    2. Es muss durch jede Zeile des GridView auf die erste leere Zeile finden, und dann diese Zeile in den Bearbeitungsmodus legen.
    Zuletzt editiert von Gervacio; 11.02.2010, 20:08.

    Comment


    • #17
      Originally posted by Gervacio View Post
      Was ich eigentlich nur möchte ist einen einfachen Weg, beliebig an einer Porsition eine neue Zeile hinzuzufügen.
      Dann brauchst du einen fertigen Control von dritten Anbieter.

      Mit GridView muss man bisschen basteln. Standartmäßig (von sich selbst ) kann er nicht neue Datensätze hinzufügen.

      Schau mal indie Richtiung DetailsView, der kann das standartmäßig, zeigt aber nur ein Datensatz. GridView unf DetailsView lassen sich zusammen binden.
      Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

      Comment


      • #18
        Originally posted by Gervacio View Post
        1. Es muss eine neue (leere Einlage) Datensatz in der Datenbank-Tabelle.
        .
        Schreib man gespeicherte Procedur die das macht, lass die beim Klick laufen
        und fülle und binde danach GridView neu.



        2. Es muss durch jede Zeile des GridView auf die erste leere Zeile finden, und dann diese Zeile in den Bearbeitungsmodus legen.
        Die Procedur muss den Wert in der Spalte "Rheinfolge" auf 0 (oder minus 1) setzen und dann

        Order by Rheinfolge

        Code:
        INSERT INTO myTable (SkillGroup, Rheinfolge) VALUES ("", -1)
        Für Grid View

        Code:
        Select * From myTable  order by Rheinfolge
        dann

        Code:
                    GridView1.EditIndex = 0;
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
        Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

        Comment


        • #19
          Guten Abend erstmal,

          Code:
          protected void Add(int inde)
                  {
                      DataTable dt = GroupAdapter.Fetch();
          
                      // leere row erzeugen
                      DataRow dr = dt.NewRow();
                      dt.Rows.InsertAt(dr, inde);
                      //Creating the first row of GridView to be Editable
                      GridView1.EditIndex = inde;
                      GridView1.DataSource = dt;
                      GridView1.DataBind();
          
                      //suche leere Zeile und hänge EditFenster dran
                      int totalrows = GridView1.Rows.Count;
                      for (int r = 0; r < totalrows; r++)
                      {
                          if (GridView1.DataKeys[r].Values[1].ToString() == "")
                          {
                              GridView1.EditIndex = r;
                              ((LinkButton)GridView1.Rows[r].Cells[0].Controls[0]).Text = "Insert";
                              break;
                          }
                      }
                      
                  }
          was ich nicht verstehe ist warum die Procedur den Wert in der Spalte "Rheinfolge" auf 0 (oder minus 1) setzen soll? Wenn ich einen Wert hinzufügen will nach dem ersten element, wäre ja das neue 2? Also erhält es in der Spalte Reihenfolge die 2.

          Comment


          • #20
            und ? funzt ?
            Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

            Comment


            • #21
              habs gelöst..

              Code:
               
              int totalrows = GridView1.Rows.Count;
                          for (int r = 0; r < totalrows; r++)
                          {
                              if (GridView1.DataKeys[r].Values[1].ToString() == "")
                              {
                                  GridView1.EditIndex = r;
              
                                  ((LinkButton)GridView1.Rows[r].Cells[3].Controls[0]).Text = "Insert";
                                  (GridView1.Rows[r].Cells[1].Controls[0]).FindControl("SortUp").Visible = false;
                                  (GridView1.Rows[r].Cells[1].Controls[0]).FindControl("SortDown").Visible = false;
                                  (GridView1.Rows[r].Cells[3].Controls[0]).FindControl("AddNew").Visible = false;
                                  break;
                              }
                          }
              Zuletzt editiert von Gervacio; 16.02.2010, 13:52.

              Comment


              • #22
                Bitte formatiere den Code noch, damit er richtig lesbar ist! Du kannst das doch, deswegen will ich es dir nicht abnehmen.

                Auf jeden Fall danke dafür, dass du die Lösung noch gebracht hast; dann haben alle etwas davon! Jürgen

                Comment

                Working...
                X