簡體   English   中英

c# 填充多個組合框以更新和刪除問題

[英]c# populating multiple combo box for update and delete question

此組合框從數據庫中獲取作業 ID 並將其分配給 jobidcombobox。

    private void filljobid()
    {
        SqlConnection con = new SqlConnection(strConn);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT job_id FROM job";
        DataSet ds = new DataSet();
        SqlDataAdapter dAdapter = new SqlDataAdapter();
        dAdapter.SelectCommand = cmd;
        con.Open();
        dAdapter.Fill(ds);
        con.Close();
        jobidcombobox.DisplayMember = "job_id";
        jobidcombobox.ValueMember = "job_id";
        jobidcombobox.DataSource = ds.Tables[0];
    }

然后這個 indexchange 代碼獲取 jobidcombobox 值並使用它來查詢以獲取與其相關的列的 rest。

    private void jobidcombobox_SelectedIndexChanged(object sender, EventArgs e)
    {
        string JobID = jobidcombobox.Text;


        SqlConnection con = new SqlConnection(strConn);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT * from job where job_id = '" + JobID + "' ";
        DataSet ds = new DataSet();
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;
        da.Fill(ds);

        if (ds.Tables[0].Rows.Count > 0)
        {
            customeridcombobox.Text = ds.Tables[0].Rows[0]["customer_id"].ToString();
            depotidcombobox.Text = ds.Tables[0].Rows[0]["depot_id"].ToString();
            startlocationtextbox.Text = ds.Tables[0].Rows[0]["start_location"].ToString();
            endlocationtextbox.Text = ds.Tables[0].Rows[0]["end_location"].ToString();
            jobtypecombobox.Text = ds.Tables[0].Rows[0]["job_type"].ToString();
        }

        else
        {
            MessageBox.Show("Invalid job number");
        }
    }

如上所示,customerid 已填充,但僅使用與 jobid 相關的單個值。 我想從數據庫中添加其他客戶 ID 值。 我曾嘗試將 function 與 jobid 相同以獲取客戶 ID,但我無法使其與工作 ID 相關。

有沒有辦法做到這一點?

嘗試這個...

填寫工作 ID 和客戶 ID 框。

private void FillJobIdAndCustomerId()
{
    SqlConnection con = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT job_id, customer_id FROM job";
    DataSet ds = new DataSet();
    SqlDataAdapter dAdapter = new SqlDataAdapter();
    dAdapter.SelectCommand = cmd;
    con.Open();
    dAdapter.Fill(ds);
    con.Close();
    var dataRows = ds.Tables[0].AsEnumerable();
    jobidcombobox.DisplayMember = "job_id";
    jobidcombobox.ValueMember = "job_id";
    jobidcombobox.DataSource = dataRows.Select(x=>x.job_id);
    customeridcombobox.DisplayMember = "customer_id";
    customeridcombobox.ValueMember = "customer_id";
    customeridcombobox.DataSource = dataRows.Select(x=>x.customer_id);
}

然后選擇工作ID時...

private void jobidcombobox_SelectedIndexChanged(object sender, EventArgs e)
{
    string JobID = jobidcombobox.Text;


    SqlConnection con = new SqlConnection(strConn);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = "SELECT * from job where job_id = @jobId";
    commandObject.Parameters.AddWithValue("@jobId", JobID);
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    da.Fill(ds);

    if (ds.Tables[0].Rows.Count > 0)
    {
        customeridcombobox.SelectedIndex = customeridcombobox.FindString(ds.Tables[0].Rows[0]["customer_id"].ToString());
        depotidcombobox.Text = ds.Tables[0].Rows[0]["depot_id"].ToString();
        startlocationtextbox.Text = ds.Tables[0].Rows[0]["start_location"].ToString();
        endlocationtextbox.Text = ds.Tables[0].Rows[0]["end_location"].ToString();
        jobtypecombobox.Text = ds.Tables[0].Rows[0]["job_type"].ToString();
    }

    else
    {
        MessageBox.Show("Invalid job number");
    }
}

如果您願意,可以對您擁有的其他組合框(示例中的部門、工作類型)遵循類似的模式。

注意:您可能已經觀察到我使用 SqlParameters 稍微更改了查詢構建。 它在示例代碼中的編寫方式是SQL Injection的經典案例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM