2014-09-04 19 views
1

我想從一個GridView更新多個記錄,其中一個行更新ASP.NET網頁中的多個記錄。從單個Gridview行更新多個記錄

明晰 -

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

對於其他人,我發現你可以通過對象事件編輯參數,無論它們是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; 
}