webForumDet fria alternativet

Kolla om kontroll finns

.NET

4 svar · 312 visningar · startad av paraxe

Medlem sedan apr. 2004298 inlägg
Frågan#1

Hej

I en repeater så binder jag ett produkt id till antingen en "buttons"- CommandArgument eller till en DropdownList beroende på om det finns flera artikelnummer på produkten eller inte.

Vid klick, där jag ska lägga allt i en kundkorg så ska jag kolla om det finns ett id i CommandArgument eller i en DropDownList.SelectedValue.

Alltså vid bindning:

ArrayList aList = lo.getArtnr(((TblProduct)e.Item.DataItem).PkId);
					if(aList.Count == 1)
					{
						btnOrder.CommandArgument = ((TblArtNr)aList[0]).PkIdArtnr.ToString();
						art.InnerText = "bla..";
						price.InnerText = "bla..";
					}
					else
					{
						DropDownList ddlArt = new DropDownList();
						ddlArt.DataSource = aList;
						ddlArt.DataTextField = "ddlText";
						ddlArt.DataValueField = "PkIdArtnr";
						ddlArt.DataBind();
						art.Controls.Add(ddlArt);
						price.Visible = false;
						pricedt.Visible = false;
					}

Och vill lägga i korgen:

int	Productid;
				try
				{
					Productid = Convert.ToInt32(e.CommandArgument);
				}
				catch(NullReferenceException)
				{
					Productid = Convert.ToInt32(((DropDownList)e.Item.FindControl("ddlArt")).SelectedValue);
				}

Änte så man ska ska göra???

Det fungerar inte iaf.

Mvh

Pär

Medlem sedan juni 2004533 inlägg
#2

Standardfråga #1:
Vad menar du med att det "inte fungerar"?

Kolla ifall referensen är null istället för att utnyttja felhantering för det:

if (e.CommandArgument != null) {
   ...
} else {
   ...
}
Medlem sedan apr. 2004298 inlägg
#3

Oops, dåligt formulerad fråga, håller med om det.

Jo jag kan gå över till en if-sats istället (hade det innan).

Så till det verkliga problemet:

Hur gör jag för att hitta WebControls.DropDownList ddlArt och hämta det valda värdet?

/pär

Medlem sedan juli 2003465 inlägg
#4

Borde inte

FindControl(id as string)

funka... har inte använt det skälv...

Medlem sedan apr. 2004298 inlägg
#5

Har hittat felet.

Det berodde på att jag skapade DropDownList-controlen i repeatern för varje produkt. Lösningen blev att skapa controlen i .aspx-sidan. Först då kunde jag hitta controlen efter en PostBack. Den kan heller inte vara visible=false , så därför läggs, om det är en singel-artikel, id:et i CommandArgument.

/pär

141 ms totalt · 2 externa anrop · v20260731065814-full.2ae45ccc
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)