webForumDet fria alternativet

Textboxar, LinkButtons i en Repeater.

.NET

2 svar · 286 visningar · startad av jazzil

Medlem sedan maj 2003151 inlägg
Frågan#1

Tjena, jag har lite problem.

Det är så att jag skriver ut ett antal personer från en databas i en repeater och iochmed detta så skriver jag även ut en textbox till varje person som man ska fylla i ett unikt nummer (inte id :)) och sedan skickas med en LinkButton frågan är nu
hur jag ska göra för att veta vilken textbox som tillhör vilken linkbutton. Detta är änu svårare då min Repeater sätter unika namn på alla mina tagar med runat="server"
En sida säger mer än tusen ord :D

<asp:Repeater ID="MsomSkakRep" Runat="server">
     <ItemTemplate>
       <div id="SkiL_<%#DataBinder.Eval(Container.DataItem,"medlems_id")%>" class="SkiRowLight">
	<div id="SkiL_Name_<%#DataBinder.Eval(Container.DataItem,"medlems_id")%>" class="EdgeImgL"><%#DataBinder.Eval(Container.DataItem,"namn")%></div>
	<div id="SkiL_Input_<%#DataBinder.Eval(Container.DataItem,"medlems_id")%>" class="UgmImgR">
        <asp:TextBox TextMode="SingleLine" id="KortNr_AddL"  CssClass="KortNr_Input" maxlength="3" runat="server"/>&nbsp;<asp:LinkButton ID="AddCard_NrL" OnCommand="AddCardNr" CommandName="AddCardN" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "medlems_id") %>' Runat="server"><img src="./img/ok_button.gif" alt="OK!" /></asp:LinkButton></div>
								</div>
							</ItemTemplate>
							<AlternatingItemTemplate>
								<div id="SkiD_<%# DataBinder.Eval(Container.DataItem, "medlems_id") %>" class="SkiRowDark">
									<div id="SkiD_Name_<%# DataBinder.Eval(Container.DataItem, "medlems_id") %>" class="EdgeImgL"><%# DataBinder.Eval(Container.DataItem, "namn") %></div>
									<div id="SkiD_Input_<%# DataBinder.Eval(Container.DataItem, "medlems_id") %>" class="UgmImgR"><asp:TextBox TextMode="SingleLine" id="KortNr_AddL"  CssClass="KortNr_Input" maxlength="3" runat="server"/>&nbsp;<asp:LinkButton ID="AddCard_NrD" OnCommand="AddCardNr" CommandName="AddCardN" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "medlems_id") %>' Runat="server"><img src="./img/ok_button.gif" alt="OK!" /></asp:LinkButton></div>
								</div>
							</AlternatingItemTemplate>
						</asp:Repeater>
Medlem sedan maj 20012 812 inlägg
#2

Jag hade satt ett löpnummer på varje textbox (typ: txtKod_1, txtKod_2) sedan på varje linkbutton så sätter du ett attribute där du skriver in det löpnummret som du är på just nu.

När du sedan kontrollerar ditt event på linkbutton så kan du hämta ut löpnummret och använda det för att hitta just denna textbox.

- M

Medlem sedan maj 2003151 inlägg
#3

Jag har provat med det, men den klagar på att
server tag is not wellformed
eller
thats not an valid Id attribute

Kan vara jag som slarvar dock.

Lösning:
Jag löste det på följande sätt.
Jag tog bort OnCommand på mina linkbuttons och satte
OnItemCommand på min repeater istället.
Sen hämtar jag Det unika id för mina asp taggar med hjälp av
RepeaterCommandEventArgs på följande sätt

Request.Params[e.Item.UniqueID + ":KortNr_AddL"] //Vilket är det unika Item namnet och : + Id't på min TextBox

Då får jag ut värdet på den TextBoxen som är i samma Item som min LinkButton och detta funkar som det ska :)

267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)