Good Day All
I have a Method that i have defined that i will access in JavaScript(Page Method) and its defined like this
[WebMethod, System.Web.Script.Services.ScriptMethod]
public static void Getadata(String StrSearch)
{
View obj = new View();
obj.Bind_SearchBox(StrSearch);
// return Scriptt;
}
And the Bind_SearchBox() method is a non static method that is defined in this code behind of this page and View is the class name of the Page. Now i debugged this and i see the results are passed to the method and the Method is Defined like this
public void Bind_SearchBox(String Search)
{
ViewerService.ViewerService obj = new ViewerService.ViewerService();
String SessionKey = obj.newSession();
DateTime Date1 = Convert.ToDateTime("1980-01-01");
DateTime Date2 = Convert.ToDateTime("2012-12-31");
ViewerService.extract extract = obj.getObjects(SessionKey, Search, Date1, false, Date2, false, "", "");
try
{
RadPanelBar1.Items.Clear();
RadScheduler1.Appointments.Clear();
int Len = extract.set.Length;
for (int i = 0; i < Len; i++)
{
ViewerService.vertex value = extract.set[i];
String PanelClass = value.meta;
PanelClass = PanelClass.Replace(Remstr, "");
PanelClass = PanelClass.Replace(Remstr2, "");
Appointment app = null;
if (value.atom != null)
{
RadPanelItem pane = RadPanelBar1.Items.FindItemByText(PanelClass);
if (pane == null)
{
RadPanelItem nwpane = new Telerik.Web.UI.RadPanelItem(PanelClass);
RadPanelItem nwpaneSpliter = new Telerik.Web.UI.RadPanelItem(PanelClass);
nwpaneSpliter.IsSeparator = true;
RadPanelBar1.Items.Add(nwpane);
pane = nwpane;
}
if (value.meta == "za.co.abacus.C_EVENT")
{
app = new Appointment();
}
int atomLen = value.atom.Length;
for (int j = 0; j < atomLen; j++)
{
ViewerService.atom atm = value.atom[j];
if (atm.meta.Contains("za.co.reactor.A_LABEL"))
{
RadPanelItem NewItem = new RadPanelItem(atm.content);
pane.Items.Add(NewItem);
if (app != null)
{
app.Subject = atm.content;
app.Description = atm.content;
app.ID = value.key;
}
}
if (app != null && atm.meta.Contains("za.co.abacus.C_EVENT"))
{
app.ID = atm.content;
}
if (app != null && atm.meta.Contains("za.co.reactor.A_HORIZON"))
{
app.Start = Convert.ToDateTime(atm.content);
}
if (app != null && atm.meta.Contains("za.co.reactor.AA_HORIZON"))
{
app.End = Convert.ToDateTime(atm.content);
}
if (app != null && atm.meta.Contains("za.co.reactor.A_TEXT"))
{
app.Description = atm.content;
}
if (app != null && app.End > app.Start)
{
RadScheduler1.DataStartField = app.Start.ToString();
RadScheduler1.DataSubjectField = app.Subject.ToString();
RadScheduler1.DataEndField = app.ToString();
RadScheduler1.DataKeyField = app.ID.ToString();
RadScheduler1.SelectedView = SchedulerViewType.MonthView;
RadScheduler1.SelectedDate = app.Start;
RadScheduler1.Visible = true;
}
}
}
}
}
catch (ApplicationException ex)
{
}
finally
{
obj.closeSession(SessionKey);
}
}
Now this Function works well and it has no problems , in the debug more, i check the value that is supplied to this function from the page method function its fine. and my JS looks like this
function keyPress() {
var tb = document.getElementById("<%=txtsearchid%>");
if (tb.value.length == 2) {
PageMethods.Getadata(tb.value);
ToggleCollapsePane();
}
return false;
}
and the Toggle function
function ToggleCollapsePane() {
var splitter = $find("RadSplitter1");
var pane = splitter.getPaneById("LeftPane");
if (!pane) return;
if (pane.get_collapsed()) {
pane.expand();
}
else {
pane.collapse();
}
}
so the Getadata() Function will call the Bind_SearchBox() Function and pass the Parameter and the function Bind_SearchBox() will do the Job as you can see at the end it sets some control to visible. But this does not bring me back results(The RadScheduler1 is not binded with data and RadPanelBar1 does not show anything)
I had a search button that is that was calling the same method and passing the same parameters but it could show results and it looked like this
protected void btnSearch_Click(object sender, EventArgs e)
{
RadToolBarItem textItem = RadToolBar1.FindItemByText("Button1");
TextBox txtseach = (TextBox)textItem.FindControl("txtsearch");
if (txtseach.Text != "")
{
Bind_SearchBox(txtseach.Text.Trim());
}
}
If i click this above button it will show results. The txtseach have the same text and it calls the same method but when i call this function and inject parameters from page method it does not work.
I am Surprised.
Thanks