Hello! I am using Telerik ASP.NET controls to develop a WebApplication in C#, What I need is to show some data in a Grid, so I selected RadGrid to do it.
In my firt test, I just have a textbox with a button, so when you click on it, the text on the textbox is added to a global list, and this list is copied to a local list and added as DataSource:
I tested it and all worked fine, the problem is that the elements that I have to add to the grid are not those from the textbox, but they come from a WCF Duplex Service. So I add the Service Reference and create the client object to invoke the Service functions. As it is a Duplex Service, the client must implement Callback interface with the function that will be executed when the service returns a value.
I added a new button, to call the service, the Callback class, and a static class "UIGlobal" so I could access to the UpdateGrid method from this Callback class and pass the value I want to add to the grid:
When I execute it, everything seems to work fine, there are not exceptions thrown and I can see how the Send function is executed, it calls the UpdateGrid with the right value, and this function execute all the instructions, but the new value is not added to the grid, so I don't know what is happening, I don't know if it is because the function is being called from the UIGloblal Reference.
I can send you my proyect with both the asp.net client and the duplex service if you want.
Hope somebody can help me. Thanks!!
In my firt test, I just have a textbox with a button, so when you click on it, the text on the textbox is added to a global list, and this list is copied to a local list and added as DataSource:
public static List<string> gl = new List<string>(); //Global list to store all the elementsprotected void RadButton3_Click(object sender, EventArgs e) { string txt = RadTextBox1.Text; UpdateGrid(txt); }public void UpdateGrid(string elem) //Procedure to update the grid contents { gl.Add(elem); List<string> l = new List<string>(); //Local list to set it as DataSource for the grid, so I don't get the exception l.AddRange(gl); RadGrid1.DataSource = l; RadGrid1.DataBind(); }I tested it and all worked fine, the problem is that the elements that I have to add to the grid are not those from the textbox, but they come from a WCF Duplex Service. So I add the Service Reference and create the client object to invoke the Service functions. As it is a Duplex Service, the client must implement Callback interface with the function that will be executed when the service returns a value.
I added a new button, to call the service, the Callback class, and a static class "UIGlobal" so I could access to the UpdateGrid method from this Callback class and pass the value I want to add to the grid:
public partial class Default : System.Web.UI.Page { public static List<string> gl = new List<string>(); protected void Page_Load(object sender, EventArgs e) { UIGlobal.MainPage = this; //Initialize the attribute of UIGlobal to get the reference os this page to access the UpdateGrid method } protected void RadButton3_Click(object sender, EventArgs e) //Same as before { string txt = RadTextBox1.Text; UpdateGrid(txt); } public void UpdateGrid(string elem) //The method that updates the grid { gl.Add(elem); List<string> l = new List<string>(); l.AddRange(gl); RadGrid1.DataSource = l; RadGrid1.DataBind(); } protected void RadButton2_Click(object sender, EventArgs e) //Method that calls the WCF Duplex Service { InstanceContext instanceContext = new InstanceContext(new CallbackHandler()); PubSubClient ps_service = new PubSubClient(instanceContext); //Create the object required to call the service List<string> tops = new List<string>(); tops.Add("realtime.db.analog.0analog.description"); ps_service.subscribe_Integrity(tops); //Call the service function }}public class CallbackHandler : IPubSubCallback //This is the Callback class { public void Send(Change c) //When the service sends a value to the client, this function is executed { UIGlobal.MainPage.UpdateGrid(c.value); //Execute the UpdateGrid method with the value that the service sends back }}public class UIGlobal //This is the class used to access to the page{ public static Default MainPage { get; set; } //Reference to the page, initialized in the Page_Load method}When I execute it, everything seems to work fine, there are not exceptions thrown and I can see how the Send function is executed, it calls the UpdateGrid with the right value, and this function execute all the instructions, but the new value is not added to the grid, so I don't know what is happening, I don't know if it is because the function is being called from the UIGloblal Reference.
I can send you my proyect with both the asp.net client and the duplex service if you want.
Hope somebody can help me. Thanks!!