SVN r338
SVN-Revision: r338
This commit is contained in:
@@ -52,6 +52,7 @@ using Spire.Barcode;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections;
|
||||
using Newtonsoft.Json;
|
||||
using System.Net;
|
||||
|
||||
namespace Lskj.Control
|
||||
{
|
||||
@@ -402,7 +403,10 @@ namespace Lskj.Control
|
||||
{
|
||||
this.gridView.CustomRowFilter += GridView_CustomRowFilter;
|
||||
}
|
||||
#region LabPicUrl控件实现事件
|
||||
this.gridView.CustomUnboundColumnData += OnGridViewCustomUnboundColumnData;
|
||||
this.gridView.DoubleClick += OnShowImageDoubleClick; ;
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -795,8 +799,8 @@ namespace Lskj.Control
|
||||
case ControlType.LabPic:
|
||||
InitPicEdit(column);
|
||||
break;
|
||||
case ControlType.LabPicNew:
|
||||
InitPicEditNew(column);
|
||||
case ControlType.LabPicUrl:
|
||||
InitPicEditUrl(column, model);
|
||||
break;
|
||||
case ControlType.LabSelectReturnId:
|
||||
case ControlType.LabSelectReturnText:
|
||||
@@ -4240,9 +4244,24 @@ namespace Lskj.Control
|
||||
picEdit.CustomHeight = 16;
|
||||
gridColumn.ColumnEdit = picEdit;
|
||||
}
|
||||
public void InitPicEditNew(GridColumn gridColumn)
|
||||
/// <summary>
|
||||
/// <para>说明:表格图片</para>
|
||||
/// <para>创建人:龚宇超</para>
|
||||
/// <para>创建日期:2018-08-02 </para>
|
||||
/// <para>修改人:</para>
|
||||
/// <para>修改日期:</para>
|
||||
/// <para>修改备注:</para>
|
||||
/// <para>版本:1.0</para>
|
||||
/// </summary>
|
||||
public void InitPicEditUrl(GridColumn gridColumn, GridColumnModel model)
|
||||
{
|
||||
gridColumn.AppearanceCell.Options.UseTextOptions = true;
|
||||
gridColumn.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center;
|
||||
gridColumn.OptionsColumn.AllowEdit = false;
|
||||
gridColumn.FieldName = $"{model.FieldName}{Guid.NewGuid()}";
|
||||
RepositoryItemPictureEdit pictureEdit = new RepositoryItemPictureEdit();
|
||||
pictureEdit.ShowMenu = false;
|
||||
pictureEdit.NullText = " ";
|
||||
pictureEdit.SizeMode = PictureSizeMode.Zoom;
|
||||
gridControl.RepositoryItems.Add(pictureEdit);
|
||||
gridColumn.UnboundType = UnboundColumnType.Object;
|
||||
@@ -7439,7 +7458,109 @@ namespace Lskj.Control
|
||||
/// <param name="e"></param>
|
||||
private void OnGridViewCustomUnboundColumnData(object sender, CustomColumnDataEventArgs e)
|
||||
{
|
||||
|
||||
if (e.Column.Tag != null && e.Column.Tag is GridColumnModel columnModel)
|
||||
{
|
||||
if (columnModel.FieldType == ControlType.LabPicUrl && e.IsGetData)
|
||||
{
|
||||
string imageUrl = e.Row != null && e.Row is DataRowView dataRowView && dataRowView.Row.Table.Columns.Contains(columnModel.FieldName) ? dataRowView.Row[columnModel.FieldName] + "" : "";
|
||||
if (!string.IsNullOrEmpty(imageUrl))
|
||||
{
|
||||
if (!imageUrl.StartsWith("http"))
|
||||
{
|
||||
string oaUrl = SystemInfo.Instance.OAUrl.EndsWith("/") ? SystemInfo.Instance.OAUrl : $"{SystemInfo.Instance.OAUrl}/";
|
||||
imageUrl = $"{oaUrl}{imageUrl}";
|
||||
}
|
||||
if (columnModel.LabPicUrlImages == null)
|
||||
{
|
||||
columnModel.LabPicUrlImages = new Hashtable();
|
||||
}
|
||||
// 检查缓存中是否已存在该图片
|
||||
if (!columnModel.LabPicUrlImages.ContainsKey(imageUrl))
|
||||
{
|
||||
Task.Factory.StartNew(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
using (WebClient webClient = new WebClient())
|
||||
{
|
||||
byte[] bytes = webClient.DownloadData(imageUrl);
|
||||
using (MemoryStream memoryStream = new MemoryStream(bytes))
|
||||
{
|
||||
Bitmap bitmap = new Bitmap(memoryStream);
|
||||
int height = 18;
|
||||
int newWidth = (int)((decimal)height / (decimal)bitmap.Height * (decimal)bitmap.Width);
|
||||
Bitmap zoomBitmap = new Bitmap(bitmap, new Size(newWidth, height));
|
||||
columnModel.LabPicUrlImages[imageUrl] = new KeyValuePair<Image, Image>(bitmap, zoomBitmap);
|
||||
BeginInvoke(new Action(() =>
|
||||
{
|
||||
gridView.BeginUpdate();
|
||||
e.Value = zoomBitmap;
|
||||
gridView.EndUpdate();
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
gridView.BeginUpdate();
|
||||
e.Value = ((KeyValuePair<Image, Image>)columnModel.LabPicUrlImages[imageUrl]).Value;
|
||||
gridView.EndUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 点击单元格显示图片控件
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void OnShowImageDoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
GridView gridView = sender as GridView;
|
||||
Point point = gridView.GridControl.PointToClient(MousePosition);
|
||||
GridHitInfo gridHitInfo = gridView.CalcHitInfo(point);
|
||||
if (gridHitInfo == null || !gridHitInfo.InRowCell || gridHitInfo.Column == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
GridColumn gridColumn = gridHitInfo.Column;
|
||||
if (gridColumn.Tag == null || !(gridColumn.Tag is GridColumnModel columnModel))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (columnModel.FieldType == ControlType.LabPicUrl)
|
||||
{
|
||||
DataRow dataRow = gridView.GetDataRow(gridHitInfo.RowHandle);
|
||||
string imageUrl = dataRow.Table.Columns.Contains(columnModel.FieldName) ? dataRow[columnModel.FieldName] + "" : "";
|
||||
if (string.IsNullOrEmpty(imageUrl))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!imageUrl.StartsWith("http"))
|
||||
{
|
||||
string oaUrl = SystemInfo.Instance.OAUrl.EndsWith("/") ? SystemInfo.Instance.OAUrl : $"{SystemInfo.Instance.OAUrl}/";
|
||||
imageUrl = $"{oaUrl}{imageUrl}";
|
||||
}
|
||||
if (columnModel.LabPicUrlImages.ContainsKey(imageUrl))
|
||||
{
|
||||
using (FrmPicture frmPicture = new FrmPicture())
|
||||
{
|
||||
Image image = ((KeyValuePair<Image, Image>)columnModel.LabPicUrlImages[imageUrl]).Key;
|
||||
frmPicture.Text = "预览";
|
||||
frmPicture.Picture = image;
|
||||
frmPicture.WindowState = FormWindowState.Maximized;
|
||||
frmPicture.StartPosition = FormStartPosition.CenterScreen;
|
||||
frmPicture.ShowDialog();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region 当前表格的拖拽方法
|
||||
|
||||
Reference in New Issue
Block a user