2012-08-31 56 views
0

我正在使用C#[C sharp]和sql server來開發桌面應用程序。 我有三個表:在datagridview中顯示其他表中的數據以取代外部值

  1. tblSbjEmp
    SID
    的eID

  2. tblSbj
    SID
    主旨名稱

  3. tblEmp
    的eID
    EmployeeName

我想告訴tblSbjEmp在DataGridView中。 我已經更換組合框hidding 的eID在datagridview的很容易,但我的問題是,我代替SID的網格想主旨名稱(不組合框)必須是隻讀

public DataSet getDS(String strTableName, String strQuery) 
    { 
     myCon = new SqlConnection("connection string"); 
     try 
     { 
      DS = new DataSet(); 
      DA = new SqlDataAdapter(strQuery, myCon); 
      SqlCommandBuilder cmdBldr = new SqlCommandBuilder(DA); 
      DA.Fill(DS, strTableName); 
      return DS; 
     } 
     catch (SqlException ex) 
     { 
      MessageBox.Show(ex.Message + "-----" + ex.ToString()); 
      DataTable DT = new DataTable(); 
      return DS; 
     } 
     finally 
     { 
      if (myCon.State == ConnectionState.Open) 
       myCon.Close(); 
     } 

    } 


ds = SObj.getDS("tblSbjEmp", "Select * from tblSbjEmp"); 

//Lecturer Combobox 
DataGridViewComboBoxColumn Employee = new DataGridViewComboBoxColumn(); 
Employee.HeaderText = "Lecturer"; 
Employee.Name = "Employee"; 
Employee.MaxDropDownItems = 4; 
Employee.Visible = true; 
Employee.Width = 150; 
Employee.DataSource = clsSettings.getAllRecords("Select eID, EmployeeName from tblEmp"); 

Employee.DataPropertyName = "eID"; 
Employee.ValueMember = "eID"; 
Employee.DisplayMember = "EmployeeName"; 

dgvLecturer.Columns.Add(Employee); 

在組合框中,我們可以設定DatapropertyName,ValueMember & DisplayMember並選擇combox的數據源,但我怎樣才能得到SubjectName(固定值)來代替sID。但是當我必須更新表,我必須更新sID以下是我使用的更新命令。 SObj.DA.Update(ds,「tblSbjCrs」); 查詢不能通過這種方法更新,所以我使用了網格後面的單個表格。

+0

你是否從數據庫中插入了tbl的內容? – Oedum

+0

是的,我想更新表** tblSbjEmp **只有沒有添加,否刪除 – AsadRaza

+0

需要修改您的選擇查詢。分享它可以相應地改變。 – Sami

回答

0

我有我自己的答案。 我試圖通過薩米先生告訴後的查詢工作。感謝薩米先生。這是我的查詢:

SELECT sID, eID, 
    (SELECT SubjectName 
     FROM dbo.Subject 
     WHERE (sID = dbo.tblSbjEmp.sID)) AS SubjectName 
FROM dbo.tblSbjEmp 
ORDER BY sID 

這是一個相關的子查詢和可更新。謝謝大家。

相關問題