» »

Asp.NET Dodajanje TextBox-ov?

Asp.NET Dodajanje TextBox-ov?

Mediator ::

Ali mogoče kdo ve kako bi dinamično dodajal TextBox-e? Namreč, imam aplikacijo ki prebere iz baze vsa vprašanja in jih izpiše v okno kot labele. Za slednje ni problem, ker ne rabijo bit označene..Rabim pa textboxe v katere bom vpisoval odgovore, ki pa morajo biti označeni, da jih lahko primerjam iz baze odgovorov.

Kako naj bi stvar izgledala
Vprasanje1 TextBox[1]
Vprasanje2 TextBox[2]
Vprasanje3 TextBox[3]

TextBox box = new TextBox().........kako zdaj nardit array od tega?
Pa prosim za kodo v C#.

HVALA VSEM za morebitne odgovore!

MaCoFaCo ::

Nimam časa kode pisat, predlagam pa ti da si pogledaš System.Web.UI.WebControls.Repeater

Mediator ::

Macofaco a mi poveš približno kak bi naj to zgledalo,prosim!

MaCoFaCo ::

ASPX:
<asp:Repeater id="repeater" runat="server">
	<ItemTemplate>
		<asp:TextBox ID="repeaterTB" Runat="server"></asp:TextBox>
	</ItemTemplate>
</asp:Repeater>


Codebehind:
protected System.Web.UI.WebControls.Repeater repeater;
	
private void Page_Load(object sender, System.EventArgs e)
{

	if (!IsPostBack)
	{
		repeater.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(repeater_ItemDataBound);
		repeater.DataSource = new string[]{"value1", "value2"};
		repeater.DataBind();
	}
	else
	{
		//branje vpisanih vrednosti...
		foreach (RepeaterItem ri in repeater.Items)
		{
			TextBox tb = ri.FindControl("repeaterTB") as TextBox;
			if (tb != null)
			{
				string textBoxValue = tb.Text;
			}
		}
	}
}

private void repeater_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
	TextBox tb = e.Item.FindControl("repeaterTB") as TextBox;
	if (tb != null)
	{
		tb.Text = e.Item.DataItem as string;
	}
}

MaCoFaCo ::

Zgornja koda naredi dva textboxa z default vrednostmi "value1" in "value2".
Koliko textboxov naredi in kakšne so začetne vrednosti je odvisno od tega:

repeater.DataSource = new string[]{"value1", "value2"};

EDIT: DataSource je lahko tudi DataTable, pa še kaj drugega bi šlo...

Zgodovina sprememb…

  • spremenilo: MaCoFaCo ()

Mediator ::

Najlepša ti hvala za tole.

Zdaj me pa še zanima, če gre recimo za RadioButtonList-e in ne TextBoxe?

Vprasanje1
RadioButtonList1
RadioButtonList2
RadioButtonList3

Vprasanje2
RadioButtonList4
RadioButtonList5
RadioButtonList6
RadioButtonList7

Kot nekaksen kviz, da bi potem sel cez vsa ta in dobil tista ki so bla oznacena?
Pri posameznem textboxu je bil en niz pri radiobuttonulistu jih je pa več in hkrati tudi več radiobuttonlisto-ov?Kako pa tukaj?

Lepo te prosim za odgovor!

MaCoFaCo ::

Ma not lahk namečeš kar te volja :)

Mediator ::

da ne bom odpiral nove teme,

.
..
                        for(int i=0;i<5;i++)
                        {      
                                RadioButtonList rbl = new RadioButtonList();
				
				for(int j=0;j<3;j++)
				{
					String item = j.ToString();
					rbl.Items.Add(item);
				}
                                Controls.Add(rbl);
                        }



Zdaj pa vprašanje za mio$..Imamo 5 radiobuttonlistov..kako zdaj dostopat recimo do drugega rbl da pogledamo kaj je bilo oznaceno?

Zgodovina sprememb…

  • spremenilo: Mediator ()

MaCoFaCo ::

Miško, tale RadioButtonList rbl = new RadioButtonList() mi je sumljiv :P
Kje ti to ustvarjaš? Nared kot sem ti povedu, z repeaterjem. Vse kar moraš narest je, da TextBox zamenjaš z RadioButtonList. Osebno bi naredu eno custom kontrolo, v kateri bi bilo vprašanje z repeaterjem in odgovori.
Potem pa bi na glavno stran dal še en repeater, v katerega bi dal to novo kontrolo.

Problem s kontrolami, ki jih dinamično dodajaš na stran kot si to ti naredil, je da se izgubi ViewState. Not pa maš kaj je uporabnik kliknil... Ta tvoj način je torej mission impossible (razen če uporabiš umazane trike).

Mediator ::

                private void btnPrikaziVprasanja_Click(object sender, System.EventArgs e)
		{
			if (!IsPostBack)
			{
				repeater.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(repeater_ItemDataBound);
				repeater.DataSource = new string[]{"value1", "value2","value3","value4"};
				repeater.DataBind();
			}
		}
      
                private void repeater_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
		{
			RadioButtonList rbl = e.Item.FindControl("repeaterRBL") as RadioButtonList;
			if (rbl != null)
			{
				rbl.Items.Add( e.Item.DataItem as string);
			}
		}

.
Tole potem naredi 4 RadioButtonListe.In v vsakem RadioButtonListu po en RadioButton(Value1,Value2,....)..zdaj pa kako naredit da jih v enem radiobuttonlistu naredi poljumno število radiobutnov(to so odgovori prebrani z baze). Oprosti ampak ker sem totalen začetnik se mi ne sanja kako naredit custom kontrolo..prosim če se da na kak drug način..recimo da za DataSource repeaterja vzamem recimo DataTable?
Macofaco, res ti hvala za te izčrpne informacije!

Mediator ::

Zdaj sm zadevo sprobal z DataListom, ki mi zraven odgovorov da še labelo tako da zgleda kot mora.Vendar še vedno ne znam napolnit te labele in on odgovorov.Kakšen datasource bi moral narediti?

Microsoft ::

Lej, jst ti predlagam resitev za ~30$. klik Knjiga je kratka in jedernata, z problemi in primeri, pa tudi razlozenega je nekaj. In ko jo preletis, ne bos mel vec takih problemov "kako napolnit tabelo", ker bos videl, da je to über simple. En primer pogledas, pa ti je takoj jasno, kako naprej. Priporocam.


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Mediator ::

Sam en problem še mi ostaja!Tole je koda,

aspx:

<asp:datalist id="DataList1" runat="server" BorderColor="Blue" GridLines="Vertical">
		<ItemTemplate>
			<asp:Label id=Label2 Text='<%# DataBinder.Eval(Container.DataItem, "Vprasanja") %>' runat="server" Font-Size="X-Small" Font-Names="Trebuchet MS">
			</asp:Label>
			<asp:RadioButtonList id=datalistRBL runat="server" DataSource='<%# DataBinder.Eval(Container.DataItem,"Odgovori") %>' Font-Size="X-Small" Font-Names="Trebuchet MS">
			</asp:RadioButtonList>
		</ItemTemplate>
</asp:datalist>

----------------------------------------------------------------------------------------------------
private void Page_Load(object sender, System.EventArgs e)
		{
			if (!IsPostBack)
			{
				ArrayList prviAL = new ArrayList();
				ArrayList drugiAL = new ArrayList();
				ArrayList tretjiAL = new ArrayList();
				
				prviAL.Add("Odgovor1");
				prviAL.Add("Odgovor2");
				prviAL.Add("Odgovor3");
				
				drugiAL.Add("Odgovor1");
				drugiAL.Add("Odgovor2");

				tretjiAL.Add("Vprasanje1");
				tretjiAL.Add("Vprasanje2");
				tretjiAL.Add("Vprasanje3");
				
				DataTable dt = new DataTable("tabla");
				dt.Columns.Add("Odgovori",typeof(object));
				dt.Columns.Add("Vprasanja", typeof(string));
				
				
				dt.Rows.Add(new object[] {prviAL,"Vprasanje1" });
				dt.Rows.Add(new object[] {drugiAL,"Vprasanje2" });
				dt.Rows.Add(new object[] {tretjiAL,"Vprasanje3"});

				DataList1.DataSource = dt;
				DataBind();
			}
		}



ki mi da rezultat, en radiobutton pri vsakem listu prevec.Zakaj?

Zgodovina sprememb…

  • spremenilo: Mediator ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[ASP.NET] Prenos podatkov iz ene spletne strani v drugo

Oddelek: Programiranje
14950 (809) Cvenemir
»

C# Program

Oddelek: Programiranje
393106 (2029) Spura
»

[ ASP.NET ] Vprašanje glede podajanja parametrov

Oddelek: Programiranje
151575 (1306) salesky
»

[C#] Dostop do objekta iz različnih form

Oddelek: Programiranje
182174 (1887) Kekec
»

C#, Dodajanje podatkov v Arraylist z Gumbom

Oddelek: Programiranje
82289 (2128) Beezgetz

Več podobnih tem