Quantcast
Channel: Xamarin.Forms — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 89864

Cannot Render other images from database

$
0
0

Hi Xamarin Forum,
Can somebody help me here im little stuck at rendering my other images from my database Here is my Code

PostModel.cs

public class Post
    {
        public int Id { get; set; }
        public string Uploader { get; set; }
        public string OwnersEmail { get; set; }
        public DateTime dateUpload { get; set; }
        public string PhotoSource { get; set; }
        public string PhotoSource2 { get; set; }
        public string PostContent { get; set; }
        public string OwnersPhoto { get; set; }
        public ImageSource Photo
        {

            get
            {
                byte[] bytes = Convert.FromBase64String(PhotoSource);
                MemoryStream ms = new MemoryStream(bytes);
                ImageSource s = ImageSource.FromStream(() => ms);
                return s;
            }
            set
            {

            }
        }
        public ImageSource Photo2
        {

            get
            {
                byte[] bytes = Convert.FromBase64String(PhotoSource);
                MemoryStream ms = new MemoryStream(bytes);
                ImageSource s = ImageSource.FromStream(() => ms);
                return s;
            }
            set
            {

            }
        }

    }

Xaml

 <StackLayout>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <StackLayout>
                    <StackLayout Spacing="0" VerticalOptions="Start" Orientation="Horizontal">
                        <StackLayout.Margin>
                            <OnPlatform x:TypeArguments="Thickness">
                                <On Platform="iOS" Value="0,12,0,0" />
                                <On Platform="Android" Value="0,15,0,0" />
                            </OnPlatform>
                        </StackLayout.Margin>
                    </StackLayout>
                </StackLayout>
            </Grid>
            <Frame HorizontalOptions="Fill" Grid.Column="0" Grid.Row="0" HeightRequest="20" BackgroundColor="Black" Margin="0,-25,0,25">
                <Image Source="back_white.png" HeightRequest="40" WidthRequest="40" HorizontalOptions="Start">
                    <Image.GestureRecognizers>
                        <TapGestureRecognizer Tapped="BackFunction"/>
                    </Image.GestureRecognizers>
                </Image>
            </Frame>
            <StackLayout Margin="10,5,10,0">
                <StackLayout>
                    <Image Source="{Binding Photo}" HeightRequest="200" Aspect="AspectFill" />
                    <StackLayout Orientation="Horizontal" Margin="5,5,10,10">
                        <Image Source="{Binding Photo_2}" HeightRequest="70" WidthRequest="70" Margin="0,0,5,0" />
                        <!--<Image Source="{Binding Photo3}" HeightRequest="70" WidthRequest="70" Aspect="AspectFill" Margin="0,0,5,0" />
                        <Image Source="{Binding Photo4}" HeightRequest="70" WidthRequest="70" Aspect="AspectFill" Margin="0,0,5,0" />-->
                    </StackLayout>
                </StackLayout>
                <Label Text="{Binding HouseName}" HorizontalOptions="Start" FontSize="16"/>
                <Label Text="Details" Margin="0,15,0,0"/>
                <ScrollView>
                    <StackLayout>
                        <Label Text="{Binding PostContent}" FontSize="15"/>
                        <StackLayout Orientation="Horizontal">
                            <Label Text="Contact"/>
                            <Label Text="{Binding Uploader}" TextColor="Blue" x:Name="ownerName">
                                <Label.GestureRecognizers>
                                    <TapGestureRecognizer Tapped="ContactOwner"/>
                                </Label.GestureRecognizers>
                            </Label>
                        </StackLayout>
                    </StackLayout>
                </ScrollView>
            </StackLayout>
        </StackLayout>

CodeBehind

public partial class PostDetailPage : ContentPage
    {
        Post SelectedPost;
        public List<Post> postPhotos;
        public PostDetailPage (Post PostItem)
        {
            this.SelectedPost = PostItem;
            InitializeComponent ();
            BindingContext = SelectedPost;
            BindPhoto();

        }


        private void BindPhoto()
        {
            DataSet ds = new DataSet();
            Pipeline databaseConnect = new Pipeline();
            try
            {
                using (SqlCommand selectPhoto = new SqlCommand("SELECT * FROM t_Post WHERE Id='" + SelectedPost.Id + "'", databaseConnect.connectDB()))
                {
                    using (SqlDataReader reader = selectPhoto.ExecuteReader())
                    {
                        postPhotos = new List<Post>();
                        while (reader.Read())
                        {
                            string image2 = Convert.ToBase64String((byte[])reader["Photo_2"]);

                            var otherPhoto = new Post
                            {
                                PhotoSource2 = image2
                            };
                            postPhotos.Add(otherPhoto);
                        }
                    }
                }
            }
            catch(Exception ex)
            {

            }

        }
     }
}

PS: what happens is that if Im gonna use parameter Photo everything goes well but if I use Photo_2 and Photo2 my program breaks and says
System.InvalidCastException: Specified cast is not valid


Viewing all articles
Browse latest Browse all 89864

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>