Skip to main content

Microsoft Silverlight

Answered Question Return JsonArray from SelectedItems in a DataGrid with LINQRSS Feed

(0)

Darren9962
Darren9962

Member

Member

5 points

24 Posts

Return JsonArray from SelectedItems in a DataGrid with LINQ

I'm working on a Silverlight control that works with some legacy ASP.Net forms.  I have a DataGrid that is bound to an Observerable Collection of a class that looks like this:

 

        [DataContract]
public class Pharmacy
{
[DataMember]
public int PharmacyID { get; set; }
[DataMember]
public string PharmacyName { get; set; }
[DataMember]
public string PharmacyAddr { get; set; }
[DataMember]
public string PharmacyCity { get; set; }
[DataMember]
public string PharmacyState { get; set; }
[DataMember]
public string PharmacyZip { get; set; }
[DataMember]
public string FaxNumber { get; set; }
[DataMember]
public string Notes { get; set; }
[DataMember]
public int Status { get; set; }
}

  In my Silverlight control I have a method like so:

 

        [ScriptableMember]
public JsonArray GetPharmacies()
{

}

  I'd like to use the SelectedItems method of the DataGrid and turn one or more selected rows into a JsonArray that looks like this:

 

	[{ 
iPtPharmacyID: 0,
iPharmacyID: PharmacyID,
sName: PharmacyName,
sAddr: PharmacyAddr,
sFax: FaxNumber,
iStatus: Status,
sInfo: Notes
}]
  I'd like to do this with LINQ if possible.  I have looked all over and haven't found any good examples of how to do this.

Darren9962
Darren9962

Member

Member

5 points

24 Posts

Answered Question

Re: Return JsonArray from SelectedItems in a DataGrid with LINQ

 Here's how I am doing it now:

 

        [ScriptableMember]
        public ScriptObject GetPharmaciesJson()
        {
            string[] ret = new string[this.PharmacyList.SelectedItems.Count];
            int index = 0;

            foreach (Pharmacy pharm in this.PharmacyList.SelectedItems)
            {
                ret[index] = String.Format("{{iPtPharmacyID:{0},iPharmacyID:{1},sName:\"{2}\",sAddr:\"{3}\",sFax:\"{4}\",iStatus:{5},sInfo:\"{6}\"}}", 0, pharm.PharmacyID,
                        pharm.PharmacyName,pharm.PharmacyAddr,pharm.FaxNumber,pharm.Status,pharm.Notes);
            }

            return (ScriptObject)HtmlPage.Window.Eval(String.Format("[{0}]", String.Join(",", ret)));
        }
...which is really ugly and long. 
  

  • Unanswered Question
  • Answered Question
  • Announcement
Microsoft Communities