Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

binding TextBox into DataTable

[es] :: .NET :: binding TextBox into DataTable

[ Pregleda: 2292 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

denavrabac
Oslo

Član broj: 149932
Poruke: 7
*.bb.online.no.



Profil

icon binding TextBox into DataTable26.06.2007. u 02:09 - pre 205 meseci
Imam problem. Napravio sam dataset i napunio ga ovako:
Code:

        string selectSQL = "SELECT * FROM sections ";
        selectSQL += "WHERE section_active = 1 ";
        selectSQL += "ORDER BY section_order ASC ";

        SqlConnection con = new SqlConnection(connectionString);
        SqlCommand cmd = new SqlCommand(selectSQL, con);

        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        DataSet dataset = new DataSet();
        

        try
        {
            con.Open();
            adapter.Fill(dataset, "sections");

            cmd.CommandText = "SELECT * FROM questions ORDER BY question_order ASC";
            adapter.Fill(dataset, "questions");

            cmd.CommandText = "SELECT * FROM options";
            adapter.Fill(dataset, "options");

        }
        catch (Exception err)
        {
            Lejbl.Text = "Error reading database. ";
            Lejbl.Text += err.Message;
        }
        finally
        {
            con.Close();
        }

        DataRelation Sections_Questions = new DataRelation("Sections_Questions",
            dataset.Tables["sections"].Columns["section_id"],
            dataset.Tables["questions"].Columns["section_id"]);
        
        DataRelation Questions_Options = new DataRelation("Questions_Options",
            dataset.Tables["questions"].Columns["question_id"],
            dataset.Tables["options"].Columns["question_id"]);

        dataset.Relations.Add(Sections_Questions);
        dataset.Relations.Add(Questions_Options);

zatim, postavio relacije i slijedece je da napunim gridview:
Code:

       foreach (DataRow sectionRow in dataset.Tables["sections"].Rows)
        {
            if (int.Parse(sectionRow["form_id"].ToString()) == DAL.FormDAL.getSelectedFormID())
            {
                section++;
                DataRow drs = datatable.NewRow();
                drs[formName] = sectionRow["section_name"].ToString().ToUpper();
                datatable.Rows.Add(drs);

                foreach (DataRow questionRow in sectionRow.GetChildRows(Sections_Questions))
                {
                    if (int.Parse(questionRow["question_active"].ToString()) == 1)
                    {
                        qnumber++;
                        DataRow drqn = datatable.NewRow();
                        drqn[formName] = questionRow["question_name"].ToString();
                        datatable.Rows.Add(drqn);
                        if (questionRow["question_text"].ToString() != "")
                        {
                            DataRow drqt = datatable.NewRow();
                            drqt[formName] = questionRow["question_text"].ToString();
                            datatable.Rows.Add(drqt);
                        }

                        foreach (DataRow optionRow in questionRow.GetChildRows(Questions_Options))
                        {     
                            if (int.Parse(optionRow["question_type"].ToString()) == 1)
                            {
                                TextBox TextB = new TextBox();
                                TextB.Height = 80;
                                TextB.Width = 240;
                                TextB.ID = optionRow["question_id"].ToString();

                                DataRow drot = datatable.NewRow();
                                [b]drot[formName] = TextB; [/b]
                                datatable.Rows.Add(drot);

                            }
                            
                        }
                    }
                }
            }   
        }
        gridvju.DataSource = datatable;
        gridvju.DataBind();

gridview se napuni kako treba osim polja gdje treba da bude textbox, tu mi pise:
System.Web.UI.WebControls.TextBox, umjesto da se pojavi textbox u koji se moze tipkati, kako hocu da bude

Zna li iko u cemu je problem? Zar nemogu dodijeliti redu datatabele textbox ovako: drot[formName] = TextB;

[Shadowed: dodati [code] tagovi.]

[Ovu poruku je menjao Shadowed dana 26.06.2007. u 09:38 GMT+1]
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.ptt.yu.

Sajt: www.mika.rs


+6 Profil

icon Re: binding TextBox into DataTable26.06.2007. u 09:03 - pre 205 meseci
Ne, ne mozes. Mesas babe i zabe Pogledaj u MSDN-u za TemplateFields. Drugo, ne razumem ovu celu peripetiju oko kopiranja podataka iz jedne tabele u drugu. Binduj GridView tako sto ces DataSource postaviti na tvoj dataset, a DataMember na MasterTabela.ImeRelacije i svaku kolonu na polje u tabeli sa detaljima.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

denavrabac
Oslo

Član broj: 149932
Poruke: 7
*.bb.online.no.



Profil

icon binding TextBox into DataTable26.06.2007. u 15:47 - pre 205 meseci
Ma pokusavam da napravim paging, samo ne znam kako.

Napravio sam questionform koji vadi pitanja iz database i postavlja ih u htmltabelu. Generisu se vrste pitanja, jel textbox, radio, ili checkbox, zavisi sve od question_type polja u tabeli questions u databazi. Tu sve fino funkcionise, ima dugme za pohranjivanje u answers tabelu u databazi i cak vadi statistiku iz nje, admin funkcija, ma ko bombona,

medjutim, tabela izlista 20 pitanja i ja to hocu da pagam, recimo sekcija po stranici.

Pokusavao sam da sve strpam u data tabelu i zatim u gridview, jer ne znam kako da pagam hrmltabelu, medjutim evo ne ide, i skroz sam izgubljen, ne znam sta da radim!
 
Odgovor na temu

denavrabac
Oslo

Član broj: 149932
Poruke: 7
*.bb.online.no.



Profil

icon Re: binding TextBox into DataTable27.06.2007. u 14:49 - pre 205 meseci
Dusty, ti mi se cinis kao da imas puno vise pojma od mene, kako da pageam htmltabelu i da li je to uopste moguce?
Hocu da napravim neku tabelu u kojoj ce se pojaviti pitanja iz databaze, da budu jedno ispod drugog. To sam uspio sa obicnom htmldateblom, medjutim
duga je i nemogu da je pageam. A preko gridviewa ne znam kako, jer ne znam kako se puni gridview red po red, tako da sam pokusao da prvo napunim datatable
sto je ispalo da mijesam babe i zabe :)

Upomoc ljudi!!
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.ptt.yu.

Sajt: www.mika.rs


+6 Profil

icon Re: binding TextBox into DataTable29.06.2007. u 09:42 - pre 205 meseci
Citat:
denavrabac: Dusty, ti mi se cinis kao da imas puno vise pojma od mene,


Samo se tako ceshljam
Princip je jednostavan, napravis gridview, kolonu sa raznolikim kontrolama zavisno od nekog polja u bazi napravis kao template field, i hvatas event kada se red vezuje za datasource. Tu proveravas tip kroz switch case i kreiras kontrolu koju ubacujes u celiju (ovde je indeks celije hardkodovan).
Problem je sto je ta kontrola dinamicki kreirana i kada se bude uradio post back, ona ne postoji, tako da pre snimanja moras da re-kreiras te kontrole. Evo ti prost primer:

Code:

    SqlConnection con;
    SqlDataAdapter sda;
    DataTable table;

    protected void Page_Load(object sender, EventArgs e)
    {
        System.Diagnostics.Debug.WriteLine("Page_Load");

        con = new SqlConnection("server=.;database=test; uid=sa;pwd=1234");
        table = new DataTable("Pitanja");

        con.Open();

        sda = new SqlDataAdapter("select * from Pitanja", con);
//Vraca PitanjeID (int identity), Pitanje (nvarchar(250)), TipOdgovora (int)

        sda.Fill(table);

        GridView1.DataSource = table;
        GridView1.DataBind();
    }
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {  
        DataRowView row;
        row = (DataRowView)e.Row.DataItem;

        if (row != null)
        {            
            switch ((int)row["TipOdgovora"])
            {
                case 1:     //TextBox
                    TextBox tb = new TextBox();
                    tb.EnableViewState = true;
                    e.Row.Cells[1].Controls.Add(tb);
                    break;
                case 2:     //CheckBox
                    CheckBox cb = new CheckBox();
                    cb.EnableViewState = true;
                    e.Row.Cells[1].Controls.Add(cb);
                    break;
                    //TODO itd, itd ...
            }
        }
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {        
        foreach(GridViewRow row in GridView1.Rows){
            foreach (WebControl ctrl in row.Cells[1].Controls)
            {                
                if(ctrl.GetType() == typeof(TextBox))
                    System.Diagnostics.Debug.WriteLine(((TextBox)ctrl).Text);

                if(ctrl.GetType() == typeof( CheckBox))
                    System.Diagnostics.Debug.WriteLine(((CheckBox)ctrl).Checked.ToString());
            }            
        }
    }

A data grid izgleda ovako:
Code:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="498px" OnRowDataBound="GridView1_RowDataBound">
            <Columns>
                <asp:BoundField HeaderText="Pitanje" DataField="Pitanje" />
                <asp:TemplateField HeaderText="Odgovor"></asp:TemplateField>
            </Columns>
        </asp:GridView>


Pageing radis standarno by the book

America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

denavrabac
Oslo

Član broj: 149932
Poruke: 7
*.bb.online.no.



Profil

icon binding TextBox into DataTable04.07.2007. u 00:51 - pre 204 meseci
Dusty, hvala, ovo mi je puno pomoglo. Neke stvari su mi sada mnogo jasnije, jos samo paging da napravim

 
Odgovor na temu

denavrabac
Oslo

Član broj: 149932
Poruke: 7
*.bb.online.no.



Profil

icon binding TextBox into DataTable06.07.2007. u 01:15 - pre 204 meseci
Dusty, kako da rekreiram kontrole prije snimanja? Kako da zapamti koje sam opcije izabrao? Sve ostalo fino radi osim toga. Bas sam pocetnik, ali eto trudim se
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.ptt.yu.

Sajt: www.mika.rs


+6 Profil

icon Re: binding TextBox into DataTable06.07.2007. u 10:18 - pre 204 meseci
Prva metoda koja se poziva je Page_Load i tu ih rekreiras preko DataBind koji ce da poziva RowDataBound. Ovaj primer koji sam postovao upravo to radi u metodi btnSave_Click, samo sto umesto Debug.WriteLine ide neka tvoja metoda za snimanje. Nisam ti napomenuo ali zdrava praksa je da dodas jednu nevidljivu bindovanu kolonu za primarni kljuc tabele.
Sta te zapravo muchi, insertovanje, updateovanje ?
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

denavrabac
Oslo

Član broj: 149932
Poruke: 7
*.bb.online.no.



Profil

icon Re: binding TextBox into DataTable06.07.2007. u 13:30 - pre 204 meseci
Ma u redu je to, nego kada kliknem na prev dugme, on zaboravi sta sam upisao u textboxove i koje sam opcije izabrao u checkboxlistama u radiolistama, a save dugme necu jos da pravim dok to ne sredim, jer je jednostavno, samo ubaciti insert umjesto writelinea. To sam vec napravio u ovom starom questionformu, koji cita iz htmltabele, i radi fino, na isti princip kao sto si ti.
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.ptt.yu.

Sajt: www.mika.rs


+6 Profil

icon Re: binding TextBox into DataTable06.07.2007. u 14:39 - pre 204 meseci
Previous kod pageinga ? Tja, ASP.Net je stateless, sto ce reci da te podatke moras negde da cuvas izmedju prelaza sa stranice: u bazi, session state-u ...
Zavisi kako si osmislio da ti radi cela app.: da li ce korisnik da unosi podatke, i tek po kliku na 'Save' da zaista upise podatke, onda bi mogao preko Session kolekcije i da u nju stavis DataTable u kojoj su uneti podaci, mada je dosta zahtevno za resurse. Drugi nacin je da nakon svakog klika na 'next' upises podatke u bazu, i na 'prev' iscitavas u punis kontrole.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

denavrabac
Oslo

Član broj: 149932
Poruke: 7
*.bb.online.no.



Profil

icon binding TextBox into DataTable07.07.2007. u 03:51 - pre 204 meseci
Pa naravno, stateless . Kako bi to mogao izvesti, datatable u session? Da datatabeli stavim kolonu datatable.colums.add(new ..., napunim je, pa onda tek da vezem gridvju za tabelu, bez GridView1_RowDataBound metode?
 
Odgovor na temu

[es] :: .NET :: binding TextBox into DataTable

[ Pregleda: 2292 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.