我正在尝试从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真正更新多行?
我也知道数据库约定不在这里。我在业务方面,IT只给了我一个关于Oracle的表,我继承了业务用户设计的表。
提前致谢!
答案 0 :(得分:0)
对于其他人,我发现您可以通过对象事件编辑参数,无论它们是否为DataKeyNames。在我的情况下,它是on update事件,但我认为他们必须在更新它的值时通过它的索引来限定参数。
protected void dsFilteredData_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters.RemoveAt("original_ID");
e.Command.Parameters[4].Value = parammt;
e.Command.Parameters[22].Value = origparamt;
}