我有一个Winforms应用程序和一个employeeListBox,departmentComboBox和一些文本框来显示员工信息,例如fNameTextbox,lNameTextBox .....
我想通过departmentCombobox选定的值填充employeelistBox,并从employeeListBox中填充文本框。我具有用于选择部门员工的此存储过程
ALTER PROCEDURE [dbo].[selectEmployee] @departID int -- Add the parameters for the stored procedure here AS -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here declare @ErrorCode int BEGIN TRANSACTION if ( @ErrorCode = 0 ) Begin SELECT EmpID, firstname, lastName, dateOfBirth, Gender, contactNumber, maritalStatus, emailAddress, resentAddress, permanentAddress, nationality, bloodGroup, qualification, Skills, Experience, joiiningdate, probation, departmentID, Salary, paymentMode, active FROM Employee WHERE departmentID = @departID set @ErrorCode = @@error End if ( @ErrorCode = 0 ) COMMIT TRANSACTION else ROLLBACK TRANSACTION return @ErrorCode
并填充列表框我写了这段代码
private void selectEmployee(int departID) { string connString = BL.dbConn.ConnStr; DataSet ds = new System.Data.DataSet(); SqlConnection conn = new SqlConnection(connString); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = "dbo.selectEmployee"; SqlDataAdapter adapter = new SqlDataAdapter(cmd); adapter.Fill(ds); listBox1.DataSource = ds.Tables[0].DefaultView; listBox1.ValueMember = "EmpID"; listBox1.DisplayMember = "firstname"; cmd.Parameters.Clear(); conn.Close(); conn.Dispose(); }
我不知道如何将DepartmentID传递给存储过程,然后又如何从列表框数据集中填充文本框?
为了传递部门编号,您需要创建sql参数,并需要使用sql命令进行附加操作才能为您完成工作
您在代码中忘记的事情是da.SelectCommand = cmd;指定选择命令
da.SelectCommand = cmd;
SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(); SqlDataAdapter da = new SqlDataAdapter(); DataTable dt = new DataTable(); try { conn.Open(); cmd = new SqlCommand("dbo.selectEmployee", conn ); cmd.Parameters.Add(new SqlParameter("@departID", value); cmd.CommandType = CommandType.StoredProcedure; da.SelectCommand = cmd; da.Fill(dt); dataGridView1.DataSource = dt; } catch (Exception x) { MessageBox.Show(x.GetBaseException().ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { cmd.Dispose(); conn.Close(); }
在文本框中填充值,请问您能发布代码或示例您要做什么,而不是我可以进一步帮助您