将Listview行内的数据更新到数据库表不起作用

时间:2017-02-15 08:15:59

标签: c# winforms listview ado.net sql-update

基本上我使用可编辑的Listview从现有数据库绑定textboxes。 &安培;我有两个不同的按钮用于更新数据。我在下面的方法中更新了listview数据&在button点击上调用此方法。方法gets同时调用了buttons,但问题是数据只在一个button上更新。如果两个按钮调用相同的方法然后它只能用于一次按钮怎么可能。

e.g。

  

Button1 - 调用updateExistingAirContract

     

Button2 - 调用updateExistingAirContract

假设我更改textbox&的任何值调用此方法然后它应该采取我放的值而不是旧值。在按钮1上单击它取值我放&在button2上单击仍然采用旧值。以下是我的方法。

private void updateExistingAirContract()
{
    if (airContractsList.Items.Count > 0) {
        try {
            foreach (ListViewDataItem item in airContractsList.Items) {
                CheckBox chkAirList = item.FindControl("chkAirList") as CheckBox;
                TextBox airOriginList = item.FindControl("airOriginList") as TextBox;
                TextBox airDestinationList = item.FindControl("airDestinationList") as TextBox;
                TextBox flightNoList = item.FindControl("flightNoList") as TextBox;
                TextBox airServiceTypeList = item.FindControl("airServiceTypeList") as TextBox;
                TextBox airWeightList = item.FindControl("airWeightList") as TextBox;
                TextBox airRateList = item.FindControl("airRateList") as TextBox;

                MySqlConnection con = new MySqlConnection();
                MySqlCommand cmd = new MySqlCommand();
                con.ConnectionString = ConfigurationManager.ConnectionStrings("conio").ConnectionString();
                cmd.Connection = con;
                con.Open();
                cmd.CommandText = "UPDATE contracts SET origin = @origin, destination = @destination, vehicleNo = @vehicleNo, serviceType = @servicetype, weight = @weight, rate = @rate, contractFrom = @contractFrom, contractTo = @contractTo, creditPeriod = @creditPeriod WHERE ID = @ID";
                cmd.Parameters.AddWithValue("@origin", airOriginList.Text);
                cmd.Parameters.AddWithValue("@destination", airDestinationList.Text);
                cmd.Parameters.AddWithValue("@vehicleNo", flightNoList.Text);
                cmd.Parameters.AddWithValue("@serviceType", airServiceTypeList.Text);
                cmd.Parameters.AddWithValue("@weight", airWeightList.Text);
                cmd.Parameters.AddWithValue("@rate", airRateList.Text);
                cmd.Parameters.AddWithValue("@contractFrom", contractFrom.Text);
                cmd.Parameters.AddWithValue("@contractTo", contractTo.Text);
                cmd.Parameters.AddWithValue("@creditPeriod", contractFrom.Text + " - " + contractTo.Text);
                cmd.Parameters.AddWithValue("@ID", chkAirList.ToolTip);
                cmd.ExecuteNonQuery();
            }
            bindAirContractsLists();
        } catch (Exception ex) {
            Response.Write(ex);
        }
    }
}

我在此方法中放置了断点&可以看到文本框的值。

0 个答案:

没有答案