none
SQL裝到datatable之後,如何把datatable的某個欄位變更為超連結。 RRS feed

  • 問題

  • 各位前輩同仁你們好

    我的問題是 我從SQL載入資料到datatable後,如何改動datatable的某個欄位變更為超連結,之後再用gridview顯示

    以下是我想到的辦法,直接gridview fill datatable之後,再gridview.add新增一個連結欄位,接這使用dataGridView1_CellContentClick這個事件做導引。以下為我的CODE,但想說能不能直接從datatable變更某欄位為連結欄位,之後一樣用dataGridView1_CellContentClick做導引。


    public void showDoorTable1() //顯示再GridView上顯示
            {
                dataGridView1.Columns.Clear();//因為後面有用dataGridView1 add一個欄位 ,所以重新查訊要先clear掉
                if (sqlCon.State == ConnectionState.Closed)//連線資料庫
                    sqlCon.Open();
                SqlDataAdapter sqlDa = new SqlDataAdapter("select top 50 * from TableBlog order by [項次] desc", sqlCon);//要顯示的資料
    
                //建立連結欄位
                DataGridViewLinkColumn link = new DataGridViewLinkColumn();
                dataGridView1.Columns.Add(link);
                link.HeaderText = "違規照片";
                //link.Name = "123";
                link.Text = "開啟照片";
                link.UseColumnTextForLinkValue = true;
    
                DataTable dtbl = new DataTable();
                sqlDa.Fill(dtbl);
                dataGridView1.DataSource = dtbl;   //dataGridView1建立連結欄位之後再把dtbl加進來
    
    
                sqlDa.Dispose();
                sqlCon.Close();
            }
    
    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] is DataGridViewLinkCell)//判斷是不是連結
                {
                    //是連結的話,開啟同行中,已儲存路徑的欄位,這裡指向[e.RowIndex].Cells[e.ColumnIndex + 7]這欄,之後就會開啟照片
                    System.Diagnostics.Process.Start("explorer.exe", dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex + 7].Value as string);
                }
            }

    2017年9月30日 上午 03:06

解答