的WinForms。如何在设计时查找TableAdapter和填充DataTable

时间:2016-10-30 20:55:06

标签: winforms datagridview datatable design-time dataadapter

标准DataGridView中的数据看起来太空了

enter image description here

目前还不清楚数据在自定义填充网格中的外观

我将扩展网格看起来更复杂,但结果只有在运行时才可见,当它有数据时。

所以我想在设计时填写DataTable,看看结果在Grid中是如何看的。 所以我需要执行代码

this.MyDataTableTableAdapter.Fill(this.dBTestDataSet.MyDataTable)

我可以从中获取this.dBTestDataSet.MyDataTable 使用下一个代码由BindingSource分配DataSource时的DataSource:

  if ((DataSource is BindingSource) && String.IsNullOrEmpty(DataMember))
  {
    BindingSource bindingSource = (DataSource as BindingSource);
    if ((bindingSource.DataSource is DataSet) && (bindingSource.DataMember is String))
    {
      DataSet dataSet = (bindingSource.DataSource as DataSet);
      DataTable dataTable = dataSet.Tables[bindingSource.DataMember];
      return dataTable;
    }
  }

现在我有MyDataTable

但我怎样才能获得MyDataTableTableAdapter?

我在项目代码中看不到MyDataTable和MyDataTableTableAdapter之间的任何关联

虽然开发环境在每个DataTable下正确显示DataAdapter。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为将实际数据加载到设计师并不是一个好主意。您可以使用一些虚假数据填充DataGridView,这与Web表单设计者为ASP.NET GridView控件执行的操作相同。

  

问:如何获取MyDataTableTableAdapter?我没有看到MyDataTable和。之间有任何联系   项目代码中的MyDataTableTableAdapter。

每个数据集都有一个XSD文件,其中包含数据集模式的定义,还包含一些注释,这些注释将用于生成TableAdapter类,例如它包含一些节点,如:

<TableAdapter BaseClass="System.ComponentModel.Component" 
 DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" 
 DataAccessorName="CategoryTableAdapter" 
 GeneratorDataComponentClassName="CategoryTableAdapter" 
 Name="Category"
 UserDataComponentName="CategoryTableAdapter">

您可以解析文件并提取TableAdapter的相关DataTable。正如您在上面看到的那样,xml是TableAdapterDataTable相互关联的点。

您可以使用Visual Studio API方法获取xsd文件。另外,作为一种更简单的解决方法,您可以将其BuildAction设置为Embedded Resource并从已编译的程序集中获取它。

注意

另一个可满足您要求的选项是将DataGridView控件放在UserControl中并在UserControl的构造函数中加载数据,这样当您放置UserControl的实例时在表单上,​​由于设计人员执行UserControl的构造函数,因此DataGridView将填充数据。

然后,如果您希望公开Columns的{​​{1}}属性,则可以使用this solution