Я добавляю и удаляю из ObservableCollection, но Grid не обновляется - PullRequest
1 голос
/ 12 июня 2011

Я использую этот код для обновления моей сетки.Это не работает.Сетка не обновляется.Я не могу найти никаких проблем с кодом.Это приложение справочной службы.Я пытаюсь обновить закрытый тикет на сервере с моей сеткой на клиенте.ПОМОГИТЕ!

public class DAL_LOADTICKETS
{
    private static string URL ="http://helpdesk.hujelabs.com/user.php/"+Login.user_id+"/query/";
    public static void/*ObservableCollection<cTicket>*/ LoadOPENTICKETS()
    {
        // Execute the query using the LINQ to XML

        var tickets = from c in XElement.Load(URL).Elements("query") select c;
        foreach (var ticks in tickets)
        {
            cTicket lTicket = new cTicket
            {
                TicketID = ticks.Element("query_id").Value,
                TicketStatus = ticks.Element("status").Value,
                TicketSubject = ticks.Element("subject").Value,
                TicketDescription = ticks.Element("description").Value,
                TicketTags = ticks.Element("tag").Value,
                TimeStamp = ticks.Element("timestamp").Value,
            };
            if (ticks.Element("status").Value == "open")
            {
                if (!Window1.OpenTicketsList.Contains(lTicket))
                {
                    Window1.OpenTicketsList.Add(lTicket);
                }
            }

            else if (ticks.Element("status").Value == "closed")
            {
                if (Window1.OpenTicketsList.Contains(lTicket))
                {
                    Console.WriteLine("VISITED BUT NOT DELETED");

                    Window1.OpenTicketsList.Remove(lTicket);
                }
            }

        }

    }
<Grid Width="756" Background="White">
                    <ListView Name="OpenReqList" HorizontalAlignment="Stretch" VerticalAlignment="Top" ItemsSource="{Binding TicketCollection}" Width="750" PreviewMouseDoubleClick="OpenReqList_PreviewMouseDoubleClick" IsSynchronizedWithCurrentItem="True">
        <ListView.View>
            <GridView >
                <GridView.Columns>
                    <GridViewColumn Width="100" Header="Ticket ID" DisplayMemberBinding="{Binding TicketID}"/>
                    <GridViewColumn Width="250" Header="Ticket Subject" DisplayMemberBinding="{Binding Path=TicketSubject}"/>
                    <GridViewColumn Width="190" Header="Ticket Send Time" DisplayMemberBinding="{Binding Path=TimeStamp}"/>
                    <GridViewColumn Width="190" Header="Ticket Status" DisplayMemberBinding="{Binding Path=TicketStatus}"/>
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
public class cTicket
    {
        public string TicketID { get; set; }
        public string TicketStatus { get; set; }
        public string TicketSubject { get; set; }
        public string TicketDescription { get; set; }
        public string TicketTags { get; set; }
        public string TicketDiscussionID { get; set; }
        public string ResponseAdmin { get; set; }
        public string ResponseClient { get; set; }
        public string TimeStamp { get; set; }
    }

1 Ответ

1 голос
/ 12 июня 2011

Похоже, ваш код создает новый билет и пытается удалить it из ObservableCollection. Попробуйте найти билет, который уже находится в вашей коллекции, а затем удалите его. В качестве альтернативы вам может потребоваться переопределить Equals в классе Ticket, чтобы ObservableCollection знала, что ваш новый Ticket равен старому.

...