【问题标题】:Update Multiple Records From Single Gridview Row从单个 Gridview 行更新多个记录
【发布时间】: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


    【解决方案1】:

    对于其他,我发现您可以通过对象事件编辑参数,无论它们是否为 DataKeyNames。在我的情况下,它是更新事件,但我认为他们必须在更新它的值时通过它的索引来限定参数。

        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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多