c# - 如何在 Visual Studio 的数据集中添加/删除/修改特定数据表中的行?
问题描述
在 Visual Studio 项目中Dataset
,我有一个名为Tablas_calendario
. 我希望如果我单击一个按钮,我可以在Tablas_calendario
.
假设我有一个DataTable
呼叫DataTable1
,我想添加一行如果我执行以下任何操作:
DataRow newRow = Tablas_calendario.DataTable1DataTable.NewRow();
DataRow newRow = Tablas_calendario.DataTable1.NewRow();
DataRow newRow = Tablas_calendario.Tables["DataTable1"];
我收到错误,都说您需要 Tablas_calendario.Tables、Tablas_calendario.DataTable 等的非静态参考...
我一直在网上寻找解决方案,但它们都是上述方法的变体。
谁能指出我正确的方向?
解决方案
假设:
- 您有一个强类型数据集,即您调用的类型
Tablas_calendario
- 您的数据集包含一个强类型数据表,设计器将其名称命名为 DataTable1。
- 您已经创建了这样的数据集实例:
Tablas_calendario tcDataset = new Tablas_calendario();
- DataTable1 有两列:
Name (string)
和Age (int)
您可以像这样在 DataTable1 表中创建新行:
//add a new row by providing all its values
tcDataset.DataTable1.AddDataTable1Row("Federico", 33);
//create a new row then add it - useful if you don't know all the values first
var newRow = tcDataset.DataTable1.NewDataTable1Row();
newRow.Name = "Federico";
newRow.Age = 33;
tcDataset.DataTable1.Add(newRow);
不要使用NewRow
- 它返回一个基本类型 DataRow,首先剥夺了拥有强类型内容的所有优势(命名属性,如Name/string
强Age/int
类型)
您的基本问题之一是设计器中数据集类型的名称:
您可能已经将类型命名为您应该命名的实例变量。考虑将其命名为包含单词“DataSet”的名称,以保持数据集设计器为其他所有内容制定的命名约定:设计图面上名为“DataTable1”的表实际上是“DataTable1DataTable”类型,并且具有“DataTable1Row”行。也称它为比“DataTable1”更好的东西。例如,调用您的数据集“CalendariosDataSet”和其中的表,如果它与一个人相关,则称它为 Person(我上面的示例):
您的代码如下所示:
CalendariosDataSet ds = new CalendariosDataSet(); ds.Person //它是数据集对象的一个属性,它返回数据集持有的PersonDataTable实例
ds.Person.Count; //it's the count of rows
ds.Person[0].Name = "Federico"; //it edits the name of the first person
foreach(var pRo in ds.Person) //it enumerates the rows as PersonRow objects
避免使用 Rows 集合,因为它又是通用的基本类型 DataRow:
ds.Person.Rows[0]. // it has no Name property, it is just a DataRow, not a PersonRow
ds.Person.Rows[0]["Name"] = "Federico"; //it would access the name, as an object, but again you lose all the benefits of strong typing!
要非常清楚,您了解类和实例之间的区别:
public class Person{
public string Name {get; set; }
}
static void Main(string[] arg){
Person.Name = "Federico"; //"need an instance for the non static class Person" error
}
这完全是您现在遇到的问题;你认为你有一个数据集的实例,但你没有——你指的是类型,就好像它是一个实例一样。
推荐阅读
- go - 403 Forbidden proxy.github.io when go get some public package
- javascript - 有时有效有时无效,使用 imacros 打开 Tab2
- python - django-tenants TypeError:“TenantQueryset”类型的参数不可迭代
- apache-spark-sql - typeerror: column is not iterable join - 与多列上的列一起使用时出现错误
- routes - 如何防止用户登录后使用浏览器的后退按钮返回登录页面?
- swift - 节数应该写什么
- python - 如何消除两个变量之间的线性拟合?
- wordpress - 如何在 Gutenberg 的核心列表块的 ToolbarGroup 中添加一个额外的按钮?
- javascript - 将对象传递给类时,来自对象的函数未定义
- flutter - 如何在标记下移动地图并在 FLUTTER 中获得像 UBER 应用程序一样的位置