【发布时间】:2014-09-04 22:15:35
【问题描述】:
我正在尝试从 gridview 更新多条记录,其中一行更新 ASP.NET 网页中的多条记录。
澄清-
ID MyDate TeamName Attribute
1 09/04/2014 Team A Some Attribute
2 08/04/2014 Team B Some Attribute
3 07/04/2014 Team A Some Attribute
Gridview 提取记录 1,但隐藏了 ID 和 MyDate 字段,因此它们有一个模板视图要修改。
如果用户将属性字段更改为从“某些属性”读取“不同属性”;我希望它更新记录 1 和 3 属性字段以读取“不同属性”。
期望的结果:
ID MyDate TeamName Attribute
1 09/04/2014 Team A Different Attribute
2 08/04/2014 Team B Some Attribute
3 07/04/2014 Team A Different Attribute
当前更新方法:
originalDataTable = (System.Data.DataTable)ViewState["originalValuesDataTable"];
foreach (GridViewRow r in GridView1.Rows)
if (((CheckBox)r.FindControl("CheckBox1")).Checked)
{
if (IsRowModified(r))
{ GridView1.UpdateRow(r.RowIndex, false); }
}
这是我的更新命令&所有参数都设置好了:
UpdateCommand="UPDATE METRICS
SET
OWNER_INTERACTOR = :OWNER_INTERACTOR,
BACKUP_INTERACTOR = :BACKUP_INTERACTOR,
METRIC_DESCRIPTION = :METRIC_DESCRIPTION,
OFFICE = :OFFICE,
BUS_FUNCTION = :BUS_FUNCTION,
TEAM = :TEAM,
BUS_PROCEDURE = :BUS_PROCEDURE,
SUB_PROCESS = :SUB_PROCESS,
INITIATIVE = :INITIATIVE,
MISC_TEXT = :MISC_TEXT,
TIME_STAMP = :TIME_STAMP,
ACTIVE_INDICATOR = :ACTIVE_INDICATOR,
END_TIME = :END_TIME,
START_TIME = :START_TIME,
FP_5_CATEGORY = :FP_5_CATEGORY,
PS2I_CATEGORY = :PS2I_CATEGORY,
CLIENT = :CLIENT
WHERE
(DIVISION = :DIVISION) AND
(SERVICE = :SERVICE) AND
(PROCESS = :PROCESS) AND
(METRIC_TYPE = :METRIC_TYPE) AND
(METRIC_NAME = :METRIC_NAME)"
但问题是“UpdateRow”仅在给定 GridView DataKeyName 的情况下更新该行,我必须省略它来更新多条记录。
那么如何让 UpdateRow 真正更新多行呢?
我也知道 db 约定在这里不存在。我在业务方面,IT 只给了我一张 Oracle 上的表,我继承了一个业务用户设计的表。
提前致谢!
【问题讨论】:
标签: gridview