Avatar billede segato Nybegynder
10. januar 2008 - 13:41 Der er 2 kommentarer og
1 løsning

GridView RowUpdating.

Jeg har et gridview hvor EditEnabled er enabled. Jeg har binded en simpel liste til kontrollen, og tilføjet RowUpdating så jeg kan editere i min liste. Men problemet er at NewValues er tom. Jeg læste mig så frem til man skulle have fat i de textboxe kontrollen selv genere, men der er Text property på kontrol den gamle værdi. Hvordan tilføjer jeg RowUpdating på en GridView?

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
   
    System.Collections.Generic.List<Val> list = new System.Collections.Generic.List<Val>();
    protected void Page_Load(object sender, EventArgs e)
    {
        Val val1 = new Val();   
        val1.Col1 = "Ijiooo";
        val1.Col2 = "Ijiooo";

        Val val2 = new Val();
        val2.Col1 = "Ijiooo";
        val2.Col2 = "Ijiooo";

       
        list.Add(val1);
        list.Add(val2);

        GridView1.DataSource = list;
        GridView1.DataBind();
    }

    public enum En { Test1, Test2, Test3 };

    public class Val
    {
        string[] arr = { "1", "2", "3" };
        En _en = En.Test1;

        public En En
        {
            get { return _en; }
            set { _en = value; }
        }

        public string[] Arr
        {
            get { return arr; }
            set { arr = value; }
        }

        string _Col1 = string.Empty;
        bool True = false;

        public bool True1
        {
            get { return True; }
            set { True = value; }
        }
        public string Col1
        {
            get { return _Col1; }
            set { _Col1 = value; }
        }
        string _Col2 = string.Empty;

        public string Col2
        {
            get { return _Col2; }
            set { _Col2 = value; }
        }
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        GridView1.DataBind();
        //String country = GridView1.Rows[e.NewEditIndex].Cells[1].Text;

    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        TextBox tb1 = (TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0];
        TextBox tb2 = (TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0];

        list[e.RowIndex].Col1 = tb1.Text;
        list[e.RowIndex].Col2 = tb2.Text;

        GridView1.DataSource = list;
        GridView1.DataBind();         
    }
}
Avatar billede segato Nybegynder
12. januar 2008 - 11:43 #1
Man skal bruge en datasource kontrol i 2.0
Avatar billede frydenholm Nybegynder
15. januar 2008 - 21:03 #2
Det bør da ikke være nødvendig med en datasource kontrol for at det virker.

Måske skyldes problemet, at der i pageload tilføjes det samme data hver gang.
Jeg har ikke testet det, men du kan evt. prøve at sætte lave din pageload sådan her:

protected void Page_Load(object sender, EventArgs e)  {
      if (!isPostBack){
        Val val1 = new Val();   
        val1.Col1 = "Ijiooo";
        val1.Col2 = "Ijiooo";

        Val val2 = new Val();
        val2.Col1 = "Ijiooo";
        val2.Col2 = "Ijiooo";

       
        list.Add(val1);
        list.Add(val2);

        GridView1.DataSource = list;
        GridView1.DataBind();
      }
    }

Jeg har i hvert fald noget tilsvarende til at virke.
Avatar billede segato Nybegynder
15. januar 2008 - 21:42 #3
Jo det er problemet. Hvis du søger lidt på det vil du se der er mange der har problemet. Der er også lidt enekelte forklaringer på hvorfor. Det er ikke et problem at binde listen, men det er et problem af få e.NewValues ud af RowUpdating event når man ikke andevender en DataSource kontrol.
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