微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#Datagridview:即使用户选择项目,组合框列单元格值也为空

如何解决C#Datagridview:即使用户选择项目,组合框列单元格值也为空

|| 我正在构建一个允许用户操纵XML数据的GUI。一位名为Peter的很有帮助的同伴向我指出了一个方向,使我质疑为什么即使用户在组合框中选择一个值,我的单元格值仍为空。 我已经阅读了一些内容:comboBoxcolumn的value成员,display成员,数据源和datapropertyname。我已经弄清楚了显示和值成员的作用,但是决定坚持使用数据源,这样我就不必指定显示成员和值成员。我相信它使事情变得容易,并且组合框中的选择都存储在字符串数组中。 前提是,用户将选择输入到富文本框中。然后,逐行读取文本框,并且在组合框中可以选择每一行。然后,我在datagridview中创建一个新的comboBox列,这些选项可供用户选择。完成用户操作后,我有一个名为“保存带有组合列...”的按钮,该按钮将在datagridview显示的数据表中创建一个新的数据列,然后尝试通过以下代码复制值:(因为无法直接将组合框列与数据表合并)
            int size = dataGridView1.Rows.Count - 1;
            DataColumn column = new DataColumn(combo.HeaderText);
            data_set_array[(int)Indexnumber.Value].Tables[(int)TableNumber.Value].Columns.Add(column);
            for (q = 0; q < size; q++)
            {
                data_set_array[(int)Indexnumber.Value].Tables[(int)TableNumber.Value].Rows[q][combo.HeaderText] = dataGridView1[\"combo\",q].Value;
            }
说完这些后,将创建新列并显示一条消息。但是,数据表的值为空,这意味着单元格值也为空。这意味着用户在组合框中选择的项目未复制到单元格值中。我究竟做错了什么?我将数据源设置为数组的字符串,其中字符串是用户为组合框选择的选项,但是当我从组合框选择选项并尝试保存它时,该值为null。我还读到我不需要担心值成员或显示成员,因为设置数据源将为我提供有效的显示文本和有效的值。 如果需要任何其他信息,请询问。提前致谢。 .NET 3.5 SP1,Visual Studio 2008 C#。 真诚的 tf.rz     

解决方法

我不确定 但是,我认为您会发现数据行是使用旧列​​定义创建的。 当您添加新列时,我怀疑它是否正在调整每一行的数组大小以添加一列。 虽然如果这是真的,我希望索引超出范围例外。 您需要将大量的代码分解,以便更容易调试。 IE,当您退出循环时,单元格是否具有您期望的值?还是分配失败? 它会告诉您哪里出了问题。 如果正在分配,则稍后会丢失数据,则需要扩大搜索范围(如果您以某种方式假设值类型是引用类型,则可能会发生这种情况) 您可能会确定需要使用正确的列定义创建一个新数据表,然后将旧数据复制到新数据表中……但是首先,您需要确定失败的地方-您当前在一行中做了太多码。 您确定从组合框中获取的值不为null吗?     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。