从福彩12选5走势图集创建福彩12选5走势图集

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
我已经在项目中定义了一个福彩12选5走势图集。

在通过此查询过滤后,我想用此福彩12选5走势图集填充datagridview:

C#:
        private void updatedgv(DataGridView dgv)
        {
            // this.timeDataTableAdapter1.Fill(this.timeDataSet.TimeData);
            DataTable dt_TimeData = timeDataSet.Tables["TimeData"];


            var qryTimeDataSource = from a in dt_TimeData.AsEnumerable()
                                    orderby a.Field<String>("EmployeeNo")
                                    where (a.Field<String>("EmployeeNo") == txtEmployeeNumber.Text)
                                    && (a.Field<DateTime>("Date") == dateTimePicker1.Value)
                                    select a;


            // How do I convert the above query to what I need to fill the table adapter with?
            this.timeDataTableAdapter1.Fill("I believe a new table from the above query goes here...");
            
            // This is wrong...
            dgv.DataSource = qryTimeDataSource;

以上代码中包含的问题。

基本上,这些步骤正确吗?
  1. 福彩12选5走势图表
  2. 询问
  3. 用表填充表适配器(源自查询)

谢谢!
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
您正在以错误的方式进行操作。您想要所有福彩12选5走势图还是不想要。如果这样做,则检索所有福彩12选5走势图并使用BindingSource在本地对其进行过滤。如果您不想要所有福彩12选5走势图,则将新查询添加到执行过滤的表适配器中,然后可以检索所需的福彩12选5走势图。无论哪种方式,都可以使用BindingSource在本地进行排序。

如果您已从“福彩12选5走势图源”窗口中拖动了一个表,那么您已经有一个BindingSource。在Load事件处理程序中在表适配器上调用Fill将把所有福彩12选5走势图从福彩12选5走势图库表导入到DataTable中。该DataTable将绑定到BindingSource,而BindingSource将绑定到DataGridView。如果要按EmployeeNo对福彩12选5走势图进行排序,请在BindingSource中指定:
timeBindingSource.Sort = "EmployeeNo";

然后,您可以像这样进行过滤:
timeBindingSource.Filter = $"EmployeeNo = '{txtEmployeeNumber.Text}' AND Date = #{dateTimePicker1.Value:M/dd/yyyy}#";

如果您只想在需要时检索所需的福彩12选5走势图,请在DataSet设计器中右键单击表适配器,然后添加一个新查询。 SQL代码如下所示:
C#:
SELECT * FROM Time WHERE EmployeeNo = ? AND [Date] = ?
并将相应的方法命名为FillByEmployeeNoAndDate和GetDataByEmployeeNoAndDate。检索福彩12选5走势图时,您可以调用FillByEmployeeNoAndDate而不是Fill并传递过滤器值(即txtEmployeeNumber.Text和dateTimePicker1.Value)作为参数。
 

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
好的,这很好。是的,我希望所有福彩12选5走势图都预先填充,这正在发生。

C#:
        private void updatedgv(DataGridView dgv)
        {
            this.timeDataTableAdapter1.Fill(this.timeDataSet.TimeData);
            DataTable dt_TimeData = timeDataSet.Tables["TimeData"];
            
            timeBindingSource.Filter = $"EmployeeNo = '{txtEmployeeNumber.Text}' AND Date = #{dateTimePicker1.Value:M/dd/yyyy}#";

            Debug.WriteLine(dateTimePicker1.Value.ToString("yyyy-MM-dd"));

        }

但是,我不确定过滤器的行为是否正确,或者我是否错过了一步。另外,在其他每篇文章中,我仍在尝试在组合框中填充福彩12选5走势图源福彩12选5走势图,并将其值记录下来。程序卡在这里,错误如下:

屏幕截图06-25-18在03.29 PM.PNG

谢谢你的耐心。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
您的代码仍然不正确。要进行过滤时,您不应再次查询福彩12选5走势图库。您已经拥有所有福彩12选5走势图,因此只需设置BindingSource的Filter。您仅查询福彩12选5走势图库一次,可能在表单的Load事件处理程序中。默认情况下,所有福彩12选5走势图将显示在网格中。如果默认情况下不希望显示任何福彩12选5走势图,则可以将BindingSource的Filter设置为"EmployeeNo = ''".

解决该问题,看看问题是否解决。如果没有,我们可以更仔细地看。
 

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
如果我在datagridview中将组合框值更改为文本框值,则可以解决此问题。但是,我希望填充预选的组合框值。由于过滤器不是查询,因此查询中的查询在哪里?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
在不了解有关您的应用程序的所有知识的情况下,以下是事件序列:

1.在表单的Load事件处理程序中,通过在适当的表适配器上调用Fill来填充三个DataTable。您将首先填充绑定到组合框列的两个DataTable,然后再填充绑定到网格的DataTable。
2.默认情况下,网格将显示绑定的DataTable中的每个记录。如果默认情况下不显示任何福彩12选5走势图,则可以将绑定到网格的BindingSource的Filter属性设置为一个值,该值将排除每条记录,例如"EmployeeNo = ''".
3.编写一个方法,该方法基于所有过滤器控件将绑定源的“过滤器”设置为绑定到网格。每当用户在任何这些过滤器控件中进行更改时,都调用该方法。

基本上就是全部。我想一个问题是您是否实际上已经将那些组合框列绑定到了DataSet。如果还没有,应该。这意味着为每个添加一个BindingSource,然后将它们绑定到DataSet(选择DataSet作为DataSource,选择适当的DataTable作为DataMember),然后将列绑定到适当的BindingSource(将BindingSource设置为DataSource,将列设置为显示为DisplayMember,主键列显示为ValueMember)。
 

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
如果我在datagridview中将组合框值更改为文本框值,则可以解决此问题。但是,我希望填充预选的组合框值。由于过滤器不是查询,因此查询中的查询在哪里?
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
如果您只是想重复以前的帖子而忽略了我发布的内容,那么我们就不能再成为朋友了。我建议您学习如何在DataGridView中正确使用组合框列。我告诉过你应该做什么。您可以选择执行或不执行。
 

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
抱歉,我不知道它被发布了两次。好像没有发布,我以为是我写的,忘了点击发送。

谢谢您的帮助!!!
 

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
jmc:

我现在已经将dgv转换为所有文本框。稍后我将处理cbo。网格填充良好。

您能告诉我,为什么我不能填写Jobs Table适配器(下面的代码)吗?

屏幕截图06-27-18,08.47 AM.PNG

屏幕截图06-27-18 at 08.47 AM 001.PNG

屏幕截图06-27-18 at 08.50 AM.PNG

再次感谢...我认为它开始变得更有意义了!
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,525
地点
悉尼,澳大利亚
编程经验
10+
首先,请不要张贴代码图像或错误消息。它们都是文本,因此没有理由不将它们发布为文本。我想复制并粘贴您的代码,但现在不能。代码应张贴在格式标记内,即


[xcode = c#]您的代码在这里[/ xcode]

或者,如果您需要其他格式,例如粗体或颜色:

[code]您的代码在这里[/ code]

错误消息应以引号形式发布。

对于此问题,错误消息似乎表明您在项目中定义了两个不同类型的福彩12选5走势图集,并且您正在使用来自一个的表适配器和来自另一个的表。错误消息(由于您发布了图像,所以我无法再次复制和粘贴该错误消息)表明您正在使用的DataTable是名为Time的类型化DataSet的一部分,而表适配器期望它是名为Typed的DataSet的一部分ResourcePlanningDataSet。
 

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
jcm:

项目中有两个福彩12选5走势图集,但是此表仅使用一个称为时间的福彩12选5走势图,这在我上一篇文章的非代码图片中表示。

Jobs表存在于两个福彩12选5走势图集中。如果单击它并运行填充查询,它的确指向正确的福彩12选5走势图。

按照这种逻辑,我是否应该填补?
C#:
this.jobsTableAdapter1.Fill(this.timeDataSet.Jobs);

作业表适配器填充了时间福彩12选5走势图集中的作业表?

谢谢!
 

ssabc

知名会员
已加入
2017年12月11日
留言内容
63
编程经验
10+
知道了:

jcm:

更改这两行,一切便开始工作。不确定如何自动生成...


C#:
            //this.jobsTableAdapter1 = new ResourcePlanningC2.ResourcePlanningDataSetTableAdapters.JobsTableAdapter();
            this.jobsTableAdapter1 = new ResourcePlanningC2.TimeTableAdapters.JobsTableAdapter();
            //

            //private ResourcePlanningDataSetTableAdapters.JobsTableAdapter jobsTableAdapter1;
            private TimeTableAdapters.JobsTableAdapter jobsTableAdapter1;
            //

不过,感谢您的帮助,因为它使我朝着正确的方向前进。周末愉快!
 
最佳 底部