【问题标题】:Binded textbox values not updating when current row changes in DataGridView当 DataGridView 中的当前行更改时,绑定的文本框值不会更新
【发布时间】:2021-11-02 13:20:41
【问题描述】:

我有一个数据集,里面有一个数据表,我还有杂项。我的主表单中的文本框绑定到这个数据表。如何在也绑定到同一个数据表的 datagridview 中更改选择时更新我的​​文本框?

可以根据需要向该问题添加代码。不知道如果有什么需要什么。

编辑解释: 下面显示我确实将我的文本绑定到数据集,正如 Caius 在上一个问题中向我展示的那样。

还有一些代码表明 datgridview 已链接到数据集数据表

        //json file holding all data to be parsed.
        string myDynamicJSON = File.ReadAllText(@"testLibrary.json");

        //the data
        ToolJson ToolData = JsonConvert.DeserializeObject<ToolJson> 
       (myDynamicJSON);

        //DataTable with something in it, do the binding
        BindingSource SBind = new BindingSource();
        SBind.DataSource = tooldataSet.Tables["Tool"];
        


        //looks into File finds json fields, and assign them to 
        variables to be used in C# to create the rows.
        foreach (var datum in ToolData.datum)
        {
            string description = datum.Description;
            string vendor = datum.Vendor;
            double cost = datum.Cost;
            string serial = datum.ProductLink;
            string employee = datum.employee;
            string location = datum.location;
            bool returntool = datum.returnTool;
            int onHand = datum.onHandQty;
            int stockQty = datum.stockQty;
            int orderQty = datum.orderQty;
            string toolType = datum.Type;
            double diameter = datum.Geometry.Dc;
            double OAL = datum.Geometry.Oal;
            string productID = datum.ProductId;


            //Populate the DataTable with rows of data
            DataRow dr = tooldataSet.Tool.NewRow();

            // Fill the values
            dr["Description"] = description;
            dr["Vendor"] = vendor;
            dr["Cost"] = cost;
            dr["Serial #"] = serial;
            dr["Employee"] = employee;
            dr["Location"] = location;
            dr["OnHand"] = onHand;
            dr["StockQty"] =stockQty;
            dr["OrderQty"] = orderQty;
            dr["Return"] = returntool;
            dr["Diameter"] = diameter;
            dr["OAL"] = OAL;
            dr["Type"] = toolType;
            dr["Product Id"] = productID;
            


            //once all data is added to the row, add the row, and loop 
            untill all data is loaded.
            tooldataSet.Tool.Rows.Add(dr);
        }
        //bind our dataset.table to the gridview
        toolDataGridView.DataSource = SBind;

        transactionEmployee_Box.Text = "";
        transactionSerial_Box.Text = "";

【问题讨论】:

  • 您能否更新您的帖子以包含Minimal, Reproducible Example,以便我们进一步帮助您?
  • 确定一下
  • 文本框和dgv真的是通过同一个绑定源绑定的吗?如果没有,添加绑定源,将其绑定到表格,将控件绑定到 BS,然后填充表格.. 一切都会工作..
  • 我用active_Description.text = Convert.ToString(toolDataGridView.CurrentRow.Cells[2].Value)弄明白了
  • 从发布的代码中我不太清楚数据是如何进入表格的。我认为这不是 Newtonsoft 做的吗?此外,您还展示了将文本框绑定到 toolBindingSource 的屏幕截图,但您没有在代码中使用该 BS 来附加到工具数据..?这里似乎存在中断/未连接问题

标签: c# datagridview textbox


【解决方案1】:

我找到了自己的答案。我最接近完成这项工作的是, active_Description.text = Convert.ToString(toolDataGridView.CurrentRow.Cells[2]);

但我从来没有意识到我可以在末尾添加.value 并且效果很好。 active_Description.text = Convert.ToString(toolDataGridView.CurrentRow.Cells[2].Value) 是我需要的。

【讨论】:

    【解决方案2】:

    我有杂项。我的主表单中的文本框已绑定

    幽默;完成此操作大约需要 2 分钟:

    • 创建一个新的 winforms .net 框架项目
    • 添加一个DataSet类型的文件,打开它
    • 右键单击数据集表面并添加数据表
    • 向表中添加两列
    • 切换到表单设计器
    • 打开数据源窗口(查看菜单>>其他窗口)
    • 展开数据源窗口中的每个节点
    • 将表格节点拖到窗体中
    • 将两个列节点拖到窗体中
    • 运行应用程序,使用任意随机测试数据将 3 行数据 bash 到 dgv 中
    • 随机上下点击行,看看文本框的变化..

    ..这是数据绑定!

    【讨论】:

    • 您实际上已经在上周回答了我的问题,并帮助我到达了现在的位置。我知道这正是你上次所说的。上次似乎奏效了。但由于某种原因它停止了工作。做我所做的事情有严重的缺点吗?似乎很容易工作,而且做起来并不复杂。 (你所说的也不是我相信我可以再次经历它)。当表单最初加载时,它将文本框绑定到第一行,这很好,但是当用户单击表单时它不会更新。
    • 哈,对不起.. 我每周发这么多帖子,我真的忘记了我告诉过谁——对不起,如果是重复信息。 “任何缺点”是一个相当广泛的问题要回答。我认为大多数习惯于在 MVC 中工作的开发人员“将您的数据保存在这里.. 通过那里的控件显示它.. 并通过这里的东西来操作它” 方式会拒绝“从 DGV 单元格值中抓取一些文本并将其放入文本框中”,因为数据存在于数据表中,而不是网格中
    • 是的,我想你回答了很多东西。我用更多内容更新了我的问题,这些内容指向出了问题。我知道这不是做事的理想方式,但它确实对我有用。我很难理解 OOP。我正在阅读一本名为 C# 玩家指南的书。一种不同的方法来呈现信息。但它对我来说进展缓慢。
    • 举个极端的例子,这有点像说“在我想要文本时截取文本框并进行 OCR 处理有什么问题”? - 它可能会非常可靠地工作,它只是“不符合预期”。当有一种机制可以将数据保存在某个地方,以及围绕它的整个生态系统以观察它的变化等事情时,我猜你要么选择使用它,或者忽略它。这肯定是一个学习曲线(我花了几个月的时间来研究它的某些部分),但是一旦你知道它如何提高生产力而不是妨碍它,它会让生活更轻松。
    • 公平点。好吧。我会在某个时候重新审视这个问题,看看我是否可以通过“正确的方式”来完成它。同时。感谢您在这两个场合的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2014-08-10
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多