我正在使用C#[C sharp]和sql server来开发桌面应用程序。 我有三张桌子:
tblSbjEmp
SID
eID
tblSbj
SID
主旨名称
tblEmp
电子身份证
EmployeeName
我想在Datagridview中显示 tblSbjEmp 。 我已经非常轻松地替换了datagridview中的组合框隐藏 eID 但我的问题是我希望SubjectName(不是组合框)代替网格中必须只读的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 :(得分:0)
我有自己的答案。 在先生告诉我之后,我试图进行查询。萨米即可。感谢萨米先生。这是我的查询:
SELECT sID, eID,
(SELECT SubjectName
FROM dbo.Subject
WHERE (sID = dbo.tblSbjEmp.sID)) AS SubjectName
FROM dbo.tblSbjEmp
ORDER BY sID
这是一个相关子查询,可以更新。谢谢大家。