I have a search page, which searches various sources (dynamically determined at runtime).
I would like to have a results area per source that updates as the search source completes. The setup that I have at the moment is not working.
Any help or advice will be greatly appreciated.
The trigger:
The script:
The markup:
The server code:
I would like to have a results area per source that updates as the search source completes. The setup that I have at the moment is not working.
Any help or advice will be greatly appreciated.
The trigger:
<
telerik:RadTextBox
ID
=
"searchTerm"
runat
=
"server"
SkinID
=
"formText"
CssClass
=
"formField"
/>
<
telerik:RadButton
AutoPostBack
=
"false"
ID
=
"searchSubmit"
UseSubmitBehavior
=
"false"
runat
=
"server"
Text
=
"Search"
OnClientClicked
=
"search"
/>
The script:
<
telerik:RadCodeBlock
ID
=
"RadCodeBlock1"
runat
=
"server"
>
<
script
type
=
"text/javascript"
>
function search() {
var panelSourceMap = $.parseJSON($('#<%= textPanelSourceMap.ClientID %>').val());
var query = $('#<%= searchTerm.ClientID %>').val();
for (var i in panelSourceMap) {
var panel = $find(panelSourceMap[i].Key);
var sourceName = panelSourceMap[i].Value;
if (panel != null) {
panel.ajaxRequest(query);
}
}
}
</
script
>
</
telerik:RadCodeBlock
>
The markup:
<
telerik:RadPanelBar
ID
=
"resultsPanelBar"
runat
=
"server"
ExpandMode
=
"FullExpandedItem"
>
<
ItemTemplate
>
<
h2
>SomeText</
h2
>
<
telerik:RadAjaxPanel
RequestQueueSize
=
"10"
LoadingPanelID
=
"searchLoadingPanel"
ID
=
"resultsUpdatePanel"
runat
=
"server"
Height
=
"200px"
Width
=
"300px"
>
<
selfsvc:SearchResults
ID
=
"searchResult"
runat
=
"server"
/>
</
telerik:RadAjaxPanel
>
</
ItemTemplate
>
</
telerik:RadPanelBar
>
The server code:
void
resultsPanelBar_ItemDataBound(
object
sender, Telerik.Web.UI.RadPanelBarEventArgs e)
{
string
sourceName = ((KeyValuePair<
string
,
string
>)e.Item.DataItem).Key;
RadAjaxPanel panel = (RadAjaxPanel)e.Item.FindControl(
"resultsUpdatePanel"
);
if
(panel !=
null
)
{
selfService.UserControls.SearchResults results = (selfService.UserControls.SearchResults)panel.FindControl(
"searchResult"
);
if
(results !=
null
)
results.SourceName = sourceName;
clientPnlSrcMap.Add(panel.ClientID, sourceName);
panel.AjaxRequest +=
new
RadAjaxControl.AjaxRequestDelegate(panel_AjaxRequest);
}
}