标准DataGridView中的数据看起来太空了
目前还不清楚数据在自定义填充网格中的外观
我将扩展网格看起来更复杂,但结果只有在运行时才可见,当它有数据时。
所以我想在设计时填写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。
答案 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是TableAdapter
和DataTable
相互关联的点。
您可以使用Visual Studio API方法获取xsd文件。另外,作为一种更简单的解决方法,您可以将其BuildAction
设置为Embedded Resource
并从已编译的程序集中获取它。
注意强>
另一个可满足您要求的选项是将DataGridView
控件放在UserControl
中并在UserControl
的构造函数中加载数据,这样当您放置UserControl
的实例时在表单上,由于设计人员执行UserControl
的构造函数,因此DataGridView
将填充数据。
然后,如果您希望公开Columns
的{{1}}属性,则可以使用this solution。