471 lines
20 KiB
C#
471 lines
20 KiB
C#
|
|
using Aspose.Words.Rendering;
|
|||
|
|
using BLL;
|
|||
|
|
using BLL.Common;
|
|||
|
|
using Model;
|
|||
|
|
using Newtonsoft.Json.Linq;
|
|||
|
|
using NPOI.SS.Formula.Functions;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Data;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Net;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Text.RegularExpressions;
|
|||
|
|
using UglyToad.PdfPig;
|
|||
|
|
using UglyToad.PdfPig.Content;
|
|||
|
|
using UglyToad.PdfPig.Writer;
|
|||
|
|
|
|||
|
|
namespace FineUIPro.Web.HJGL.DataIn
|
|||
|
|
{
|
|||
|
|
public partial class DrawingRecognitionContent : PageBase
|
|||
|
|
{
|
|||
|
|
public string URL
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return (string)ViewState["URL"];
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
ViewState["URL"] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public string fileUrl
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return (string)ViewState["fileUrl"];
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
ViewState["fileUrl"] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public DataTable dt
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return (DataTable)ViewState["DataTable"];
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
ViewState["DataTable"] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public DataTable dtOther
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return (DataTable)ViewState["dtOther"];
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
ViewState["dtOther"] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public DataTable dtIsoInfo
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
return (DataTable)ViewState["dtIsoInfo"];
|
|||
|
|
}
|
|||
|
|
set
|
|||
|
|
{
|
|||
|
|
ViewState["dtIsoInfo"] = value;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected void Page_Load(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
if (!IsPostBack)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(Request.Params["fileUrl"]))
|
|||
|
|
{
|
|||
|
|
URL = Funs.SGGLUrl + Request.Params["fileUrl"].Replace("\\", "/");
|
|||
|
|
string rootPath = Server.MapPath("~/");
|
|||
|
|
fileUrl = rootPath + Request.Params["fileUrl"];
|
|||
|
|
|
|||
|
|
// 加载PDF文档
|
|||
|
|
|
|||
|
|
if (!File.Exists(fileUrl))
|
|||
|
|
{
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
protected void btnSave_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
Grid1.Hidden = true;
|
|||
|
|
contentPanel1.Hidden =false ;
|
|||
|
|
string rootPath = Server.MapPath("~/");
|
|||
|
|
Dictionary<string,List<int>> dic= new Dictionary<string, List<int>>();
|
|||
|
|
foreach (DataRow row in dt.Rows)
|
|||
|
|
{
|
|||
|
|
if (!dic.ContainsKey(row["pipe_no"].ToString()))
|
|||
|
|
{
|
|||
|
|
dic.Add(row["pipe_no"].ToString().Trim(),new List<int>());
|
|||
|
|
}
|
|||
|
|
dic[row["pipe_no"].ToString().Trim()].Add(int.Parse(row["page_no"].ToString()));
|
|||
|
|
}
|
|||
|
|
using (var pdf = PdfDocument.Open(fileUrl))
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
for (int i = 0; i < pdf.NumberOfPages; i++)
|
|||
|
|
{
|
|||
|
|
var page = pdf.GetPage(i + 1);
|
|||
|
|
var rotation = page.Rotation;
|
|||
|
|
|
|||
|
|
string outputPath = "";
|
|||
|
|
string isono = "";
|
|||
|
|
foreach (string key in dic.Keys)
|
|||
|
|
{
|
|||
|
|
if (dic[key].IndexOf(i + 1) >= 0)
|
|||
|
|
{
|
|||
|
|
isono = key;
|
|||
|
|
outputPath = $"{rootPath}/File/PDF/Pipe/" + key;
|
|||
|
|
if (!Directory.Exists(outputPath))
|
|||
|
|
{
|
|||
|
|
Directory.CreateDirectory(outputPath);
|
|||
|
|
}
|
|||
|
|
string fileName = key;
|
|||
|
|
|
|||
|
|
var row = dtOther.Select(" page='" + (i + 1) + "' and region_type='C' ").FirstOrDefault();
|
|||
|
|
if (row != null)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(row["text"].ToString()))
|
|||
|
|
{
|
|||
|
|
fileName = row["text"].ToString();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
outputPath = $"{outputPath}/" + fileName + DateTime.Now.ToString("yyyyMMddHHmm") + ".pdf";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
using (var writer = new PdfDocumentBuilder())
|
|||
|
|
{
|
|||
|
|
PdfPageBuilder newPage = null;
|
|||
|
|
if (rotation.Value != 0 && rotation.Value != 180)
|
|||
|
|
{
|
|||
|
|
newPage = writer.AddPage(page.Height, page.Width);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
newPage = writer.AddPage(page.Width, page.Height);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
newPage.CopyFrom(page);
|
|||
|
|
// 3. 关键:清除旋转标记 + 反向旋转内容(修正视觉方向)
|
|||
|
|
// 清除 /Rotate 标记
|
|||
|
|
newPage.SetRotation(new PageRotationDegrees(rotation.Value));
|
|||
|
|
var newPdf = writer.Build();
|
|||
|
|
File.WriteAllBytes(outputPath, newPdf);
|
|||
|
|
|
|||
|
|
var isoInfo = Funs.DB.HJGL_Pipeline.FirstOrDefault(x => x.PipelineCode == isono && x.ProjectId==CurrUser.LoginProjectId);
|
|||
|
|
if (isoInfo != null)
|
|||
|
|
{
|
|||
|
|
Regex NumberRegex = new Regex(@"\d+\.?\d*");
|
|||
|
|
DataRow[] rows = dt.Select(" pipe_no='" + isono + "' and category='PIPE'");
|
|||
|
|
if (rows != null && rows.Length > 0)
|
|||
|
|
{
|
|||
|
|
//string description = rows[0]["description"].ToString();
|
|||
|
|
|
|||
|
|
//if (!isoInfo.ISO_Dia.HasValue || !isoInfo.ISO_Sch.HasValue || string.IsNullOrEmpty(isoInfo.MaterialStandardId))
|
|||
|
|
//{
|
|||
|
|
// string res = OpenAIhelper.ChatCompletion("请根据 " + description + ",识别外径,壁厚,材质标准(请严格按照国家标准返回),结果仅以JSON格式返回,不要解释,不要多余文字,不要markdown,例如 {\r\n \"外径\": \"33.4 mm\",\r\n \"壁厚\": \"6.35 mm\",\r\n \"材质标准\": \"GB/T 9948\"\r\n}");
|
|||
|
|
// ErrLogInfo.WriteLog(res);
|
|||
|
|
// JObject jobject = JObject.Parse(res);
|
|||
|
|
// string dia = jobject.Value<string>("外径");
|
|||
|
|
// string sch = jobject.Value<string>("壁厚");
|
|||
|
|
// string materialStandard = jobject.Value<string>("材质标准");
|
|||
|
|
// MatchCollection matchCollection1 = NumberRegex.Matches(dia);
|
|||
|
|
// foreach (var match in matchCollection1)
|
|||
|
|
// {
|
|||
|
|
// // 使用 TryParse 确保转换安全,避免异常
|
|||
|
|
// if (decimal.TryParse(match.ToString(), out decimal number))
|
|||
|
|
// {
|
|||
|
|
// isoInfo.ISO_Dia = number;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// MatchCollection matchCollection2 = NumberRegex.Matches(sch);
|
|||
|
|
// foreach (var match in matchCollection2)
|
|||
|
|
// {
|
|||
|
|
// // 使用 TryParse 确保转换安全,避免异常
|
|||
|
|
// if (decimal.TryParse(match.ToString(), out decimal number))
|
|||
|
|
// {
|
|||
|
|
// isoInfo.ISO_Sch = number;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// isoInfo.MaterialStandardId = Funs.DB.HJGL_BS_MaterialStandard.Where(x => x.MaterialStandardCode == materialStandard).Select(x => x.MaterialStandardId).FirstOrDefault();
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//decimal length = 0;
|
|||
|
|
//foreach (DataRow row in rows)
|
|||
|
|
//{
|
|||
|
|
|
|||
|
|
// MatchCollection matches = NumberRegex.Matches(row["qty"].ToString());
|
|||
|
|
// foreach (var match in matches)
|
|||
|
|
// {
|
|||
|
|
// // 使用 TryParse 确保转换安全,避免异常
|
|||
|
|
// if (decimal.TryParse(match.ToString(), out decimal number))
|
|||
|
|
// {
|
|||
|
|
// length += number;
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
//isoInfo.PipeLineLength = length;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
//DataRow[] rowsPipe = dtIsoInfo.Select(" pipeline_id='" + isono + "' ");
|
|||
|
|
//if (rowsPipe != null && rowsPipe.Length > 0)
|
|||
|
|
//{
|
|||
|
|
// string isNeedHead = rowsPipe[0]["post_weld_heat_treatment"].ToString();
|
|||
|
|
// if (isNeedHead == "N")
|
|||
|
|
// {
|
|||
|
|
// isoInfo.IsHot = "0";
|
|||
|
|
// isoInfo.IsHotType = null;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// isoInfo.IsHot = "1";
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
//}
|
|||
|
|
Funs.DB.SubmitChanges();
|
|||
|
|
//保存文件到附件
|
|||
|
|
|
|||
|
|
UploadFileService.SaveAttachUrl(UploadFileService.GetSourceByAttachUrl(outputPath.Replace(rootPath, ""), 10, null), outputPath.Replace(rootPath, ""), Const.HJGL_PipelineMenuId, isoInfo.PipelineId);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
public static string HeaderCorrespondence(string uploadUrl, string data, string method, string contenttype)
|
|||
|
|
{
|
|||
|
|
// 5. 创建HTTP请求
|
|||
|
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uploadUrl);
|
|||
|
|
request.Method = string.IsNullOrEmpty(method) ? "GET" : method;
|
|||
|
|
request.ContentType = string.IsNullOrEmpty(contenttype) ? "application/json;charset=utf-8" : contenttype;
|
|||
|
|
if (uploadUrl.IndexOf("https") >= 0)
|
|||
|
|
{
|
|||
|
|
request.ProtocolVersion = HttpVersion.Version10;
|
|||
|
|
}
|
|||
|
|
if (!string.IsNullOrEmpty(data))
|
|||
|
|
{
|
|||
|
|
Stream RequestStream = request.GetRequestStream();
|
|||
|
|
byte[] bytes = Encoding.UTF8.GetBytes(data);
|
|||
|
|
RequestStream.Write(bytes, 0, bytes.Length);
|
|||
|
|
RequestStream.Close();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
HttpWebResponse response = null;
|
|||
|
|
Stream ResponseStream = null;
|
|||
|
|
StreamReader StreamReader = null;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
response = (HttpWebResponse)request.GetResponse();
|
|||
|
|
ResponseStream = response.GetResponseStream();
|
|||
|
|
StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8"));
|
|||
|
|
|
|||
|
|
string re = StreamReader.ReadToEnd();
|
|||
|
|
StreamReader.Close();
|
|||
|
|
ResponseStream.Close();
|
|||
|
|
return re;
|
|||
|
|
}
|
|||
|
|
catch (WebException ex)
|
|||
|
|
{
|
|||
|
|
response = (HttpWebResponse)ex.Response;
|
|||
|
|
ResponseStream = response.GetResponseStream();
|
|||
|
|
StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8"));
|
|||
|
|
|
|||
|
|
string re = StreamReader.ReadToEnd();
|
|||
|
|
return re;
|
|||
|
|
}
|
|||
|
|
finally
|
|||
|
|
{
|
|||
|
|
if (StreamReader != null)
|
|||
|
|
{
|
|||
|
|
StreamReader.Close();
|
|||
|
|
}
|
|||
|
|
if (ResponseStream != null)
|
|||
|
|
{
|
|||
|
|
ResponseStream.Close();
|
|||
|
|
}
|
|||
|
|
if (response != null)
|
|||
|
|
{
|
|||
|
|
response.Close();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
protected void btnAudit_Click(object sender, EventArgs e)
|
|||
|
|
{
|
|||
|
|
Grid1.Hidden = false;
|
|||
|
|
contentPanel1.Hidden = true;
|
|||
|
|
btnAudit.Hidden = true;
|
|||
|
|
btnSave.Hidden = false;
|
|||
|
|
if (!string.IsNullOrEmpty(resultdata.Value))
|
|||
|
|
{
|
|||
|
|
JObject jobject = JObject.Parse(resultdata.Value);
|
|||
|
|
JArray jArray = jobject.Value<JArray>("material_rows");
|
|||
|
|
JArray jArrayOther = jobject.Value<JArray>("other_regions");
|
|||
|
|
JArray jArrayIsoInfo = jobject.Value<JArray>("drawing_info");
|
|||
|
|
dt = new DataTable();
|
|||
|
|
dt.Columns.Add("id");
|
|||
|
|
dt.Columns.Add("pipe_no");
|
|||
|
|
dt.Columns.Add("drawing_number");
|
|||
|
|
dt.Columns.Add("seq_no");
|
|||
|
|
dt.Columns.Add("category");
|
|||
|
|
dt.Columns.Add("description");
|
|||
|
|
dt.Columns.Add("spec");
|
|||
|
|
dt.Columns.Add("qty");
|
|||
|
|
dt.Columns.Add("page_no");
|
|||
|
|
dt.Columns.Add("remark");
|
|||
|
|
|
|||
|
|
dtOther = new DataTable();
|
|||
|
|
dtOther.Columns.Add("id");
|
|||
|
|
dtOther.Columns.Add("region_type");
|
|||
|
|
dtOther.Columns.Add("region_label");
|
|||
|
|
dtOther.Columns.Add("page");
|
|||
|
|
dtOther.Columns.Add("text");
|
|||
|
|
|
|||
|
|
|
|||
|
|
dtIsoInfo = new DataTable();
|
|||
|
|
dtIsoInfo.Columns.Add("id");
|
|||
|
|
dtIsoInfo.Columns.Add("page_no");
|
|||
|
|
dtIsoInfo.Columns.Add("drawing_number");
|
|||
|
|
dtIsoInfo.Columns.Add("pipeline_id");
|
|||
|
|
dtIsoInfo.Columns.Add("operation_pressure_mpa");
|
|||
|
|
dtIsoInfo.Columns.Add("operation_temp_c");
|
|||
|
|
dtIsoInfo.Columns.Add("design_pressure_mpa");
|
|||
|
|
dtIsoInfo.Columns.Add("design_temp_c");
|
|||
|
|
dtIsoInfo.Columns.Add("test_pressure_mpa");
|
|||
|
|
dtIsoInfo.Columns.Add("hydraulic_test_pressure");
|
|||
|
|
dtIsoInfo.Columns.Add("pipe_diameter_dn");
|
|||
|
|
dtIsoInfo.Columns.Add("pipe_spec_grade");
|
|||
|
|
dtIsoInfo.Columns.Add("heat_insulation");
|
|||
|
|
dtIsoInfo.Columns.Add("insulation_thickness_mm");
|
|||
|
|
dtIsoInfo.Columns.Add("post_weld_heat_treatment");
|
|||
|
|
dtIsoInfo.Columns.Add("radiographic_examination");
|
|||
|
|
foreach (JObject item in jArrayOther)
|
|||
|
|
{
|
|||
|
|
var row = dtOther.NewRow();
|
|||
|
|
row["id"] = item.Value<string>("id");
|
|||
|
|
row["region_type"] = item.Value<string>("region_type");
|
|||
|
|
row["region_label"] = item.Value<string>("region_label");
|
|||
|
|
row["page"] = item.Value<string>("page");
|
|||
|
|
row["text"] = item.Value<string>("text");
|
|||
|
|
dtOther.Rows.Add(row);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 遍历并提取数据
|
|||
|
|
foreach (JObject item in jArray)
|
|||
|
|
{
|
|||
|
|
var row = dt.NewRow();
|
|||
|
|
row["id"] = item.Value<string>("id");
|
|||
|
|
row["pipe_no"] = item.Value<string>("pipe_no");
|
|||
|
|
row["drawing_number"] = item.Value<string>("drawing_number");
|
|||
|
|
|
|||
|
|
row["seq_no"] = item.Value<string>("seq_no");
|
|||
|
|
row["category"] = item.Value<string>("category");
|
|||
|
|
row["description"] = item.Value<string>("description");
|
|||
|
|
row["spec"] = item.Value<string>("spec");
|
|||
|
|
row["qty"] = item.Value<string>("qty");
|
|||
|
|
row["page_no"] = item.Value<string>("page_no");
|
|||
|
|
row["remark"] = item.Value<string>("remark");
|
|||
|
|
if (string.IsNullOrEmpty(row["drawing_number"].ToString()))
|
|||
|
|
{
|
|||
|
|
var rowOther = dtOther.Select("page= " + row["page_no"].ToString()).FirstOrDefault();
|
|||
|
|
row["drawing_number"] = rowOther["text"];
|
|||
|
|
}
|
|||
|
|
dt.Rows.Add(row);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
foreach (JObject item in jArrayIsoInfo)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
|
|||
|
|
var row = dtIsoInfo.NewRow();
|
|||
|
|
row["id"] = item.Value<string>("id");
|
|||
|
|
row["page_no"] = item.Value<string>("page_no");
|
|||
|
|
row["drawing_number"] = item.Value<string>("drawing_number");
|
|||
|
|
row["pipeline_id"] = item.Value<string>("pipeline_id");
|
|||
|
|
row["operation_temp_c"] = item.Value<string>("operation_temp_c");
|
|||
|
|
row["design_pressure_mpa"] = item.Value<string>("design_pressure_mpa");
|
|||
|
|
row["design_temp_c"] = item.Value<string>("design_temp_c");
|
|||
|
|
row["test_pressure_mpa"] = item.Value<string>("test_pressure_mpa");
|
|||
|
|
row["hydraulic_test_pressure"] = item.Value<string>("hydraulic_test_pressure");
|
|||
|
|
row["pipe_diameter_dn"] = item.Value<string>("pipe_diameter_dn");
|
|||
|
|
row["pipe_spec_grade"] = item.Value<string>("pipe_spec_grade");
|
|||
|
|
row["heat_insulation"] = item.Value<string>("heat_insulation");
|
|||
|
|
row["insulation_thickness_mm"] = item.Value<string>("insulation_thickness_mm");
|
|||
|
|
row["post_weld_heat_treatment"] = item.Value<string>("post_weld_heat_treatment");
|
|||
|
|
row["radiographic_examination"] = item.Value<string>("radiographic_examination");
|
|||
|
|
dtIsoInfo.Rows.Add(row);
|
|||
|
|
}
|
|||
|
|
BindGrid();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
private void BindGrid()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
|
|||
|
|
Grid1.DataSource = dt;
|
|||
|
|
Grid1.DataBind();
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#region 双击事件
|
|||
|
|
/// <summary>
|
|||
|
|
/// Grid行双击事件
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="sender"></param>
|
|||
|
|
/// <param name="e"></param>
|
|||
|
|
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
|
|||
|
|
{
|
|||
|
|
if (Grid1.SelectedRowIndexArray.Length == 0)
|
|||
|
|
{
|
|||
|
|
Alert.ShowInTop("请选择一条记录!", MessageBoxIcon.Warning);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.PersonId, Const.HJGL_DataInMenuId, Const.BtnAdd))
|
|||
|
|
{
|
|||
|
|
if (DrawingRecognitionContentEdit.dicDt.ContainsKey(CurrUser.PersonId))
|
|||
|
|
{
|
|||
|
|
DrawingRecognitionContentEdit.dicDt[CurrUser.PersonId] = dt;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
DrawingRecognitionContentEdit.dicDt.Add(CurrUser.PersonId, dt);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("DrawingRecognitionContentEdit.aspx?Index={0}", Grid1.SelectedRowIndex, "维护 - ")));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
protected void Window1_Close(object sender, WindowCloseEventArgs e)
|
|||
|
|
{
|
|||
|
|
Grid1.DataSource = dt;
|
|||
|
|
Grid1.DataBind();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|