Hej Om du lägger in följande kod i PageLoad så får jag det att funka iaf, lite fulhack men ändå :-) Mitt tips är att du kör "onKeyUp" och sedan söker med hjälp av en webservice. Då behöver du ingen UpdatePanel och behöver alltså inte "POST:a" och "GET:a" något mer än just söksträngen och sökresultatet. Jag har en sådan lösning med webservice som jag löste så här:AJAX Atlas, sökning i databas
har en textbox som jag har kopplat till en updatepanel som i sig innehåller en datagrid som har en koppling till en databas, så när jag skriver text "t" så hittar den alla användare som innehåller "t". Men updatepanelen updaterar inte fråns jag släpper focus på textboxen, jag vill att updatepanelen ska uppdaterar när jag gör onkeyup eventet. Men det varkar inte finns onkeyup för asp:textbox, någon som vet hur jag ska lösa det?
Koden: http://www.aspsidan.se/code/default.asp?c=7087
har ingen speciell codebehind som behövs infogas.
Helt enkelt. Går det att få onKeyUp event på en <asp:textbox> ?
mvh / thallSv: AJAX Atlas, sökning i databas
<code>
if (!IsPostBack)
TextBox1.Attributes.Add("onKeyUp", @"javascript:setTimeout('__doPostBack(\'" + TextBox1.ClientID + @"\',\'\')', 0)");
</code>
Tänk bara på att det här resulterar i att hela sidan postas till servern varje gång nåt matas in i textboxen, kan bli lite tungt kanske men det lär du väl märka.Sv:AJAX Atlas, sökning i databas
Du kan kolla detta inlägg om hur man gör för att anropa web services med JavaScript: http://www.tednyberg.com/Default.aspx?id=41Sv: AJAX Atlas, sökning i databas
I default.aspx har jag en textbox där jag har lagt till följande kod. (Jag gör det i codebehind för att jag har olika antal sådana boxar på sidan)
<code>
box11.Attributes.Add("OnKeyUp", "hamtaspelare()")
</code>
Sedan lägger jag till ett javascript som ser ut så här: Jag skickar alltså in ett personnummer (Box11.value)
<code>
function hamtaspelare_1() {
var behavior = $find('Dp1');
var behavior2 = $find('Dp2');
if (behavior) {
var text = document.getElementById("Box11").value;
if (text.trim().length > 9){
behavior.populate(document.getElementById("Box11").value);
behavior2.populate(document.getElementById("Box11").value);
}
else
{
document.getElementById("Panel1").innerHTML="";
document.getElementById("Panel2").innerHTML="";
}
}
}
</code>
Jag populerar därigenom två paneler genom att använda mig av dynamicpopulateextender från ajaxtoolkitcontrol som ser ut så här:
<code>
<ajaxToolkit:DynamicPopulateExtender ID="Dp1" TargetControlID="Panel1" ServiceMethod="hamtaspelare" ServicePath="hamtaspelare.asmx" UpdatingCssClass="dynamic_Updating" ClearContentsDuringUpdate="true" runat="server"/>
<ajaxToolkit:DynamicPopulateExtender ID="Dp2" TargetControlID="Panel2" ServiceMethod="hamtaklubb" ServicePath="hamtaklubb.asmx" UpdatingCssClass="dynamic_Updating" ClearContentsDuringUpdate="true" runat="server"/>
</code>
Dynamicpopulateextendern kontaktar två olika webservices som jag har byggt som returnerar ett namn och en klubb som sedan läggs upp i de två olika panelerna.
Hoppas det kan vara till hjälp!