با سلام من میخوام فایل هایی که تو دیتابیس ذخیره میکنم بدون نام باشن و فقط فایل ذخیره بشه الان که میخوام فایل هارو تو دیتا گردید ویو نمایش بدم میخوام بجای sytem.byte یک عکس یا آیکون نشون داده بشه که نمایشگر فقط وجود فایل باشه یه فایلی تو دیتابیس موجود هست ضمننا پروژه ام توی wpf هستش ممنون
اگه بتونم یک convert بنویسیم حل میشه
مثلا اینجوری اما جواب نمیده
public class converterbyte2image : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
projectASLI.window.Frm_SabtTamiratHedayatControl f = new projectASLI.window.Frm_SabtTamiratHedayatControl();
//f.Dgv_Sabt_Eyb.Columns.GetType();
value = "System.Byte[]";
if (value == f.Dgv_Sabt_Eyb.Columns.GetType())
{
return "*";
}
else
{
return "" ;
}
}
<Window.Resources>
<Local:converterbyte2image x:Key="Byte2image"/>
</Window.Resources>
مشکل شما در واقع این هست که نحوه نمایش تصویر در DataGrid در WPF رو نمی دونید. برای این منظور لینک زیر رو مطالعه کنید. اگر مشکلی داشتید همینجا بگید تا توضیح داده بشه.
خب اگر تصویر شما در دیتابیس ذخیره شده و می خواهید در DateGrid نمایش بدید ابتدا باید یک کوئری داشته باشید که اطلاعات رو از دیتابیس واکشی کنید در پروژه :
private void ShowProductInfo()
{
var query = database.Database.SqlQuery<Product>("Select * From Product ");
var u = query.ToList();
dataGrid1.ItemsSource = u;
}
خب توسط صدا زدن متد بالا میتونید اطلاعات رو از دیتابیس دریافت کنید. (البته کوئری بستگی به پروژه شما داره و این کوئری جهت تست معرفی شده).
خب در قسمت دستورات xaml در بخش طراحی هم شما قطعا یک کنترل DataGrid روی پنجره خودتون قرار دادید. میتونید کدهای زیر رو برای نمایش تصویر بنویسید :
<DataGrid x:Name="dataGrid1">
<DataGrid.Columns>
<DataGridTemplateColumn Header="تصویر" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Width="70" Height="50" Source="{Binding ProductImage}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontFamily" Value="B Yekan"/>
<Setter Property="FontSize" Value="12"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</DataGridTemplateColumn.HeaderStyle>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
خب توسط دستورات بالا و بعد از اجرای پروژه تصویر شما در ستون جدول نمایش داده میشه.
با سلام مشکل رو به این صورت حل کردم اینجا میزارم شاید بدرد کسی بخوره
ابتدا یک کلاس بسازید و سپس از IvalueConverter استفاده کنید
public class converterbyte2image : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
if (value.ToString().Equals( "System.Byte[]"))
{
return new BitmapImage (new Uri("Pack://Application:,,,/img/Ok.jpg"));
}
else
{
return null;
}
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
بعد در دیتا گرید ویو تو xml هرجا که اطلاعاتتون [] System.Byte باشه بجاش یک عکس نشون میده
xmlns:Local="clr-namespace:Amozesh.Module"
<Window.Resources>
<Local:converterbyte2image x:Key="converter"/>
</Window.Resources>
<telerik:GridViewDataColumn Width="130" Header="فایل رفع عیب WORD" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center" TextWrapping="Wrap">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Word_Tamirat,Converter={StaticResource converter}}" Stretch="Uniform" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="130" Header="فایل رفع عیب Exel" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Exel_Tamirat,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="120" Header="فایل تشریح رفع عیب PDF" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Pdf_Tamirat,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="140" Header="عکس رفع عیب " TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="80" Height="80" Source="{Binding File_Image_Tamirat}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="130" Header="فیلم نحوه رفع عیب" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Movi_Tamirat,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="140" Header="فایل صوتی نحوه رفع عیب" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Seda_Tamirat,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="120" Header="فایل نقشه PDF" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Map_Pdf_Tamirat,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="140" Header="فایل SolidWork" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_SolidWork_Tamirat,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="140" Header="فایل AutoCad" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_MAP_AutoCad,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="130" Header="فایل شبیه سازی پروتئوس" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Simulate_Protus,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn Width="130" Header="فایل شبیه سازی Orcad" TextAlignment="Center" FooterTextAlignment="Center" HeaderTextAlignment="Center">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate >
<Image Width="20" Height="20" Source="{Binding File_Simulate_Orcad,Converter={StaticResource converter}}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
نتیجه نهایی میشه این الان هرجا [] System.Byte باشه بجاش یه عکس نشون میده یعنی اینکه فایلی در دیتابیس ثبت شده و اینجوری قشنگتره و نیازی نیست اسم فایل هم در دیتابیس ذخیره بشه خود فایل کفایت میکنه
با سلام این روشی که در بالا ارائه شده واسه فایل های کم حجم خوبه ولی واسه فایل های پرحجم بهتره نام هر فایلی مثلا بصورت file در دیتابیس ذخیره بشه بعد با روش بالا binding هارو بندازید روی نام فایل و بجای system.byte هرجا file بود عکس دلخواه نمایش داده بشه مثل قبل اینجوری مشکلی واسه نمایش فایل های حجیم نداریم
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
349
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
318
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4268
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4282
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3875
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
660
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3172
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3251
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2008
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
75
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
428
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4798
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|