编辑列中的所有行,data table c#
edit all rows in a column, data table c#
我有一个数据 table,其中填充了已读入的文件中的数据。然后我希望编辑特定列中的所有行。在我的例子中,将速度列除以 1.6 以从 KMH 转换为 MPH。
到目前为止,我已尝试使用以下代码,但我得到的索引超出范围
foreach (DataRow row in data_table.Rows) {
row["Speed (KM/H)"] = speed[x]/1.6;
}
这里是用文件
填充数据table的代码
private void display_hrm_data() {
/* array heart_rate_table set to heart_rate
* adds each column
* for every piece of data in heart_rate_table add rows
*/
data_table.Columns.Add("Heart Rate (BPM)", typeof(string));
data_table.Columns.Add("Speed (KM/H)", typeof(int));
data_table.Columns.Add("Cadence (RPM)", typeof(int));
data_table.Columns.Add("Altitude (M)", typeof(int));
data_table.Columns.Add("Power (Watts)", typeof(int));
data_table.Columns.Add("Time (Seconds)", typeof(int));
for (int x = 0; x < heart_rate.Count - 1; x++) {
time = time + 1;
data_table.Rows.Add(heart_rate[x],speed[x],cadence[x],altitude[x],power[x], time);
}
dgv_data.DataSource = data_table;
}
您可以使用强类型的 Field
和 SetField
扩展,否则您需要手动将字段从对象转换为 int
。您得到 IndexOutOfRange
异常,因为 x
似乎是无效索引。使用列名称。
例如:
DataColumn speedCol = data_table.Columns["Speed (KM/H)"];
foreach (DataRow row in data_table.Rows)
{
int oldSpeed = row.Field<int>(speedCol);
row.SetField(speedCol, oldSpeed / 1.6);
}
我有一个数据 table,其中填充了已读入的文件中的数据。然后我希望编辑特定列中的所有行。在我的例子中,将速度列除以 1.6 以从 KMH 转换为 MPH。
到目前为止,我已尝试使用以下代码,但我得到的索引超出范围
foreach (DataRow row in data_table.Rows) {
row["Speed (KM/H)"] = speed[x]/1.6;
}
这里是用文件
填充数据table的代码 private void display_hrm_data() {
/* array heart_rate_table set to heart_rate
* adds each column
* for every piece of data in heart_rate_table add rows
*/
data_table.Columns.Add("Heart Rate (BPM)", typeof(string));
data_table.Columns.Add("Speed (KM/H)", typeof(int));
data_table.Columns.Add("Cadence (RPM)", typeof(int));
data_table.Columns.Add("Altitude (M)", typeof(int));
data_table.Columns.Add("Power (Watts)", typeof(int));
data_table.Columns.Add("Time (Seconds)", typeof(int));
for (int x = 0; x < heart_rate.Count - 1; x++) {
time = time + 1;
data_table.Rows.Add(heart_rate[x],speed[x],cadence[x],altitude[x],power[x], time);
}
dgv_data.DataSource = data_table;
}
您可以使用强类型的 Field
和 SetField
扩展,否则您需要手动将字段从对象转换为 int
。您得到 IndexOutOfRange
异常,因为 x
似乎是无效索引。使用列名称。
例如:
DataColumn speedCol = data_table.Columns["Speed (KM/H)"];
foreach (DataRow row in data_table.Rows)
{
int oldSpeed = row.Field<int>(speedCol);
row.SetField(speedCol, oldSpeed / 1.6);
}