SVN-Revision: r338
This commit is contained in:
tdx
2025-03-18 07:09:34 +00:00
parent a1b65a1cb4
commit 24008f37c5
9 changed files with 737 additions and 35 deletions
+125 -4
View File
@@ -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