Я делаю приложение Windows формы, я использую OpenFileDialog для хранения моих данных в базе данных SQL в виде байтов. Я включил код: данные Fill показывают данные в столбцах DataGridViewLink, а функция button2_click (кнопка «Обзор и сохранение») сохраняет их в базе данных SQL.
private void button2_Click(object sender, EventArgs e)
{
DialogResult res = openFileDialog1.ShowDialog();
if (res == DialogResult.OK)
{
FileInfo fi = new FileInfo(openFileDialog1.FileName);
byte[] documentContent = File.ReadAllBytes(openFileDialog1.FileName);
string name = fi.Name;
string extn = fi.Extension;
using (SqlConnection cn = new SqlConnection(LOC))
{
SqlCommand cmd = new SqlCommand("SaveDocument", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = name;
cmd.Parameters.Add("@Content", SqlDbType.VarBinary).Value = documentContent;
cmd.Parameters.Add("@Extn", SqlDbType.VarChar).Value = extn;
cmd.Parameters.Add("@Year", SqlDbType.Int).Value = 2018;
cn.Open();
cmd.ExecuteNonQuery();
}
FillData();
}
}
private void FillData()
{
DataTable dt = new DataTable();
using (SqlConnection cn = new SqlConnection(LOC))
{
SqlCommand cmd = new SqlCommand("GetDocuments", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Year", SqlDbType.Int).Value = "2018";
cn.Open();
SqlDataReader reader = cmd.ExecuteReader();
dt.Load(reader);
}
if(dt.Rows.Count > 0)
{
dataGridView1.DataSource = dt;
foreach (DataGridViewColumn colu in dataGridView1.Columns)
{
if (colu.HeaderText != "Name")
colu.Visible = false;
}
}
}
private void ITDec2018_Load(object sender, EventArgs e)
{
DataGridViewLinkColumn col = new DataGridViewLinkColumn();
col.DataPropertyName = "DName";
col.Name = "Name";
dataGridView1.Columns.Add(col);
FillData();
}
F.Y.I: Я создаю свой собственный столбец таблицы только для имени и скрываю другие столбцы. DName - имя файла в базе данных
Я хочу нажать на ссылку файла, которая является просто именем со ссылкой, и программа должна загрузить файл, связанный с идентификатором файла, и сохранить его в загрузках, или открыть диалоговое окно и спросить где я могу его сохранить, я включил снимок экрана дисплея при запуске приложения, а также таблицу базы данных SQL.
База данных SQL
Форма с колонкой datagridViewLink
Так как мне делать то, что спрашивают, обновлять функцию cell content_click и, если да, то как?
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
Любая помощь приветствуется.