【问题标题】:C# Updating Database after edited inputs using DataBindings使用 DataBindings 编辑输入后 C# 更新数据库
【发布时间】:2018-01-22 11:22:42
【问题描述】:

我正在使用 WCF 服务和 Windows 窗体。 我的问题是如何在编辑文本字段后对更新按钮进行编码。 在我的 Windows 窗体中,我有以下代码:

            ServiceReference1.StockCardServicesClient sList = new ServiceReference1.StockCardServicesClient();
            BindingSource StockCardList = new BindingSource();

    private void Form1_Load(object sender, EventArgs e)
            {
                StockCardList.DataSource = sList.GetParticularCard();
txtID.DataBindings.Add(new Binding("Text", StockCardList, "CategoryName", true));
            txtOPCOID.DataBindings.Add(new Binding("Text", StockCardList, "MainGroupName", true));
            txtSubGroupID.DataBindings.Add(new Binding("Text", StockCardList, "SubGroupName", true));
            txtIDNumber.DataBindings.Add(new Binding("Text", StockCardList, "IDNumber", true));
            txtPartNumber.DataBindings.Add(new Binding("Text", StockCardList, "PartNumber", true));
            txtDescription.DataBindings.Add(new Binding("Text", StockCardList, "Description", true));
            }

编辑文本框内容后,我想使用更新按钮进行更新。

    private void btnUpdate_Click(object sender, EventArgs e)
    {
ServiceReference1.StockCardServicesClient sList = new ServiceReference1.StockCardServicesClient();
                ServiceReference1.StockList stockDetails = new ServiceReference1.StockList();
                StockCardList.EndEdit();

                sList.UpdateStockCard(stockDetails)
    }

这是我的 WCF 服务 DAL 的代码

public void UpdateStockCard(StockList stockDetails)
{
    con.Open();
    SqlCommand cmd = new SqlCommand("UPDATE StockCard SET PartNumber=@partNumber WHERE IDNumber='1731-000246'", con);
    cmd.Parameters.AddWithValue("@categoryName", stockDetails.CategoryName);
    cmd.Parameters.AddWithValue("@mainGroupName", stockDetails.MainGroupName);
    cmd.Parameters.AddWithValue("@subGroupName", stockDetails.SubGroupName);
    cmd.Parameters.AddWithValue("@idNumber", stockDetails.IDNumber);
    cmd.Parameters.AddWithValue("@partNumber", stockDetails.PartNumber);
    cmd.ExecuteNonQuery();
    con.Close();
}

在我的 BLL 和 ENT 中工作正常。

谢谢

【问题讨论】:

  • 您似乎正在尝试使用一组文本框绑定和编辑一组项目。您应该绑定到像网格这样的控件或使用绑定导航器。
  • 我没有在那个 windows 窗体中使用 datagridview。所有详细信息都应在文本框中进行编辑。它应该使用更新按钮进行更新。
  • 我刚刚注意到对 GetParticularCard 的调用。我想这会得到一个项目。那么,现在我想问一下——你遇到了什么问题?
  • 我想在编辑文本框字段后更新数据库中的记录。如您所见,我有一个 btnUpdate_Click 来更新,但我不知道如何编码。
  • 我认为在这里使用 BindingSource 有点矫枉过正,因为您只编辑一个项目并跨越系统边界,因此您无法使用内置更新功能,但如果我知道什么,我可以写一个答案输入 GetParticularCard() 返回。

标签: c# asp.net wcf


【解决方案1】:

实际上,有 22 个字段或文本框需要更新。我仅显示示例代码。但是如果我在下面写这段代码,它会起作用的。

private void btnUpdate_Click(object sender, EventArgs e)
    {
                ServiceReference1.StockList stockDetails = new ServiceReference1.StockList();

            stockDetails.CategoryName = txtID.Text;
            stockDetails.MainGroupName = txtOPCOID.Text;
            stockDetails.SubGroupName = txtSubGroupID.Text;
            stockDetails.IDNumber = txtIDNumber.Text;
            stockDetails.PartNumber = txtPartNumber.Text;

                sList.UpdateStockCard(stockDetails);
}

我知道有一种更好的方法可以从数据绑定中更新记录,但我不知道如何编写代码。

【讨论】:

    【解决方案2】:

    我已经想通了。这是我的代码。

    public partial class frmStockList : Form
    {
        ServiceReference1.StockCardServicesClient stockList = new ServiceReference1.StockCardServicesClient();
        ServiceReference1.StockList stockDetails = new ServiceReference1.StockList();
    
        public frmStockList(frmMainForm mainForm)
        {
            InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            ShowStockListDetails();
        }
    
        private void ShowStockListDetails()
        {
            stockDetails.SearchIDNumber = frmMainForm.stockCardID.ToString();
    
            var StockList = stockList.GetParticularCard(stockDetails);
    
            stockDetails = StockList[0];
    
            BindingSource StockCardList = new BindingSource();
    
            StockCardList.ResetBindings(false);
    
            StockCardList.DataSource = stockDetails;
    
            txtID.DataBindings.Add(new Binding("Text", StockCardList, "CategoryName", true));
            txtOPCOID.DataBindings.Add(new Binding("Text", StockCardList, "MainGroupName", true));
            txtSubGroupID.DataBindings.Add(new Binding("Text", StockCardList, "SubGroupName", true));
            txtIDNumber.DataBindings.Add(new Binding("Text", StockCardList, "IDNumber", true));
            txtPartNumber.DataBindings.Add(new Binding("Text", StockCardList, "PartNumber", true));
            txtDescription.DataBindings.Add(new Binding("Text", StockCardList, "Description", true));
            txtMinimum.DataBindings.Add(new Binding("Text", StockCardList, "Minimum", true));
            txtMaximum.DataBindings.Add(new Binding("Text", StockCardList, "Maximum", true));
            cmbUOMPO.DataBindings.Add(new Binding("Text", StockCardList, "UOMPO", true));
            cmbUOMSTOCK.DataBindings.Add(new Binding("Text", StockCardList, "UOMStock", true));
            cmbUOMPERISSUE.DataBindings.Add(new Binding("Text", StockCardList, "UOMIssue", true));
            txtUOMRatio.DataBindings.Add(new Binding("Text", StockCardList, "UOMRatio", true));
            txtWidth.DataBindings.Add(new Binding("Text", StockCardList, "Width", true));
            txtHeight.DataBindings.Add(new Binding("Text", StockCardList, "Height", true));
            txtLength.DataBindings.Add(new Binding("Text", StockCardList, "Length", true));
            txtNetWeight.DataBindings.Add(new Binding("Text", StockCardList, "NetWeight", true));
            txtWarningExpiration.DataBindings.Add(new Binding("Text", StockCardList, "WarningPeriod", true));
            txtShelfLife.DataBindings.Add(new Binding("Text", StockCardList, "ShelfLife", true));
            txtCostCode.DataBindings.Add(new Binding("Text", StockCardList, "CostCodePurchase", true));
            cmbIssueToJob.DataBindings.Add(new Binding("Text", StockCardList, "CostCodeIssueToJob", true));
            cmbIssueToWS.DataBindings.Add(new Binding("Text", StockCardList, "CostCodeIssueToWS", true));
            cmbIssueToOPCO.DataBindings.Add(new Binding("Text", StockCardList, "CostCodeIssueToOPCO", true));
            cmbIssueForDisposalSCD.DataBindings.Add(new Binding("Text", StockCardList, "CostCodeIssueToDisposalSCD", true));
            cmbIssueForDisposalDMG.DataBindings.Add(new Binding("Text", StockCardList, "CostCodeIssueToDisposalDMG", true));
            cmbIssueForDisposalEXP.DataBindings.Add(new Binding("Text", StockCardList, "CostCodeIssueToDisposalEXP", true));
            cmbIssueForDisposalOBS.DataBindings.Add(new Binding("Text", StockCardList, "CostCodeIssueToDisposalOBS", true));
        }
        private void btnClose_Click(object sender, EventArgs e)
        {
            Close();
            Dispose();
        }
    
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            stockDetails.ID = frmMainForm.stockCardID.ToString();
    
            stockList.UpdateStockCard(stockDetails);
    
            MessageBox.Show("Update successfull!", "Update Details", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Close();
            Dispose();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多