Search and Delete Items in The ListBox In Windows Phone 7

In this article, we will discuss how to search for a specified Student Name in the listBox and how to delete them.

Before reading this article, please go through the following articles:

  1. Working With ListBox In Windows Phone7

  2. Working With ListBox In Windows Phone (Edit Data In the ListBox) : Part 2

  3. Working With ListBox In Windows Phone (Send SMS, Email and Make a Call) : Part 3

In this article, we will discuss how to search for a specified Student Name in the listBox and how to delete them. I add this feature with my previous articles.

We will first discuss how to search the data from the ListBox. To do that use the following procedure.

Step 1

First we will add two Controls (TextBlock and TextBox) in the MainPage like this:

<TextBlock FontSize="22" FontWeight="Bold" Grid.ColumnSpan="2" Height="30" HorizontalAlignment="Left" Margin="10,119,0,0" Name="txtBlkSearch" Text="Search" VerticalAlignment="Top" />

<TextBox FontSize="20" Grid.Column="1" Height="71" HorizontalAlignment="Left" Margin="14,100,0,0" Name="txtSearch" Text="" VerticalAlignment="Top" Width="334" TextChanged="txtSearch_TextChanged">

    <TextBox.Background>

        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

            <GradientStop Color="Black" Offset="0" />

            <GradientStop Color="BurlyWood" Offset="1" />

            <GradientStop Color="BurlyWood" />

        </LinearGradientBrush>

    </TextBox.Background>

    <TextBox.BorderBrush>

        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

            <GradientStop Color="Black" Offset="0" />

            <GradientStop Color="#FFFFE8E8" Offset="1" />

        </LinearGradientBrush>

    </TextBox.BorderBrush>

</TextBox>

Now we can use the TextBox to search the particular Student Name.

The output will be:

LstIphn1.jpg

Now we will write the code; see the following:
 

private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)

{

    using (StudentdataContext StudentDB = new StudentdataContext(strConnectionString))

    {

        var a = from b in StudentDB.GetTable<StudentInfo>() where SqlMethods.Like(b.Extra, (txtSearch.Text + "%")) select b.Extra; 

        List<StudentInfo> dataSource = new List<StudentInfo>();

        foreach (var x in a)

        {

             dataSource.Add(new StudentInfo() { Extra = x });

        }

        this.lstStudentname.ItemsSource = dataSource; 

    } 

}

Now we use the Like Methods to search for the Student Name.

The output will be:

LstIphn2.jpg

LstIphn3.jpg

Now we will be write the code to delete the Name in the ListBox like this.

Step 1

First we create a Delete Button like this:
 

<Button FontSize="18" HorizontalAlignment="Left" Margin="232,459,0,95" Name="btnDelete" Visibility="Collapsed" Width="78" Grid.Column="1" Click="btnDelete_Click">

    <Button.Background>

        <ImageBrush ImageSource="/Contact;component/Image/Delete2.png" />

    </Button.Background>

    <Button.BorderBrush>

        <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">

            <GradientStop Color="Black" Offset="0" />

            <GradientStop Color="#FFB7A38A" Offset="1" />

        </LinearGradientBrush>

    </Button.BorderBrush>

</Button>


Now we will use an image to show the Delete button:

LstIphn4.jpg

Now we will be write the following code for the Delete button:
 

private void btnDelete_Click(object sender, RoutedEventArgs e)

{

    var listBoxItem = lstStudentname.ItemContainerGenerator.ContainerFromIndex(lstStudentname.SelectedIndex) as ListBoxItem;

    var txtBlk = FindVisualChildByType<TextBlock>(listBoxItem, "txtBlkExtra");

 

    a = txtBlk.Text;

    using (StudentdataContext StudentDB = new StudentdataContext(strConnectionString))

    {

        var remove = (from r in StudentDB.GetTable<StudentInfo>()

                      where r.Extra == a.ToString()

                      select r).FirstOrDefault();

 

        if (remove != null)

        {

            StudentDB.GetTable<StudentInfo>().DeleteOnSubmit(remove);

            StudentDB.SubmitChanges();

            MessageBox.Show("Delete The Data");

            var c = from b in StudentDB.GetTable<StudentInfo>() select b.Extra;

            //lstStudentname.ItemsSource = a;

            List<StudentInfo> dataSource = new List<StudentInfo>();

            foreach (var x in c)

            {
                dataSource.Add(new StudentInfo() { Extra = x });

            }

            this.lstStudentname.ItemsSource = dataSource;

            txtBlkCall.Visibility = Visibility.Collapsed;

             txtBlkSendEmail.Visibility = Visibility.Collapsed;

            txtBlkSMS.Visibility = Visibility.Collapsed;

            btnCall.Visibility = Visibility.Collapsed;

            btnSMS.Visibility = Visibility.Collapsed;

            btnEmail.Visibility = Visibility.Collapsed;

            btnDelete.Visibility = Visibility.Collapsed;

        }

    }

}


So when we click on the Delete button it will remove the Name from the List.