2017-09-14 51 views
0

我有一些腳本在字段留空或在asp.net web表單中爲0時出現。警告正確觸發,但是當腳本出現時提交不會停止。保存按鈕在發送「請輸入選項順序」警告後繼續保存項目。因此出現提示,但webform繼續處理保存請求。我認爲我的括號可能關閉。我似乎無法找到問題,有人看到我犯了一個錯誤嗎?我相當有信心它與我的括號有關,但我之前沒有使用中繼器中的文本框來設置警告/腳本塊,所以可能是錯誤的。我需要頁面停止處理保存,一旦「請輸入選項順序「消息出現。如果該字段爲空,那麼該頁面在「請輸入詞幹」時觸發,因此我相信這是關於括號的位置。在中繼器上設置警告時出現RegisterClientScriptBlock問題

保護無效saveButton_Click(對象發件人,EventArgs的) {

con.Open(); 

var dtOptionsData = (DataSet)ViewState["dtOption"]; 
for (var i = 0; i < RptOptions.Items.Count; i++) 
{ 
    var tbOptionOrder = (RptOptions.Items[i].FindControl("OptionOrder") as TextBox); 
    //dtOptionsData.Tables[0].Rows[i]["Option Order"] = tbOptionOrder.Text; 

    if (tbOptionOrder.Text == "") 
    { 
     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), 
      "alertMessage", 
      "alert('Please Enter Option Order');", true); 
    } 
    if (tbOptionOrder.Text == "0") 
    { 
     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), 
      "alertMessage", 
      "alert('Please Enter Option Order');", true); 
    } 
} 

    if (stemTextBox.Text == "") 
    { 
     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), 
      "alertMessage", 
      "alert('Please Enter a Stem');", true); 
    } 

else 

     try 
     { 
      //get revision header id to insert on original item 
      SqlCommand cmdOriginalHeaderID = new SqlCommand("select distinct item_header_id from item_header where item_id = @item_id", con); 
      cmdOriginalHeaderID.Parameters.AddWithValue("@item_id", cloneItemID.Text); 
      var OriginalHeaderID = cmdOriginalHeaderID.ExecuteScalar(); 

      //sql cmd1 is for item header info 
      SqlCommand cmd1 = new SqlCommand("Update item_header set item_id = @item_id, old_item_id = @old_item_id, item_stem = @item_stem, modified_by = @modified_by, modified_datetime = getdate(), language = @language,solution = @solution, item_status_id = (select distinct s.item_status_id from item_status s left join item_header h on h.item_status_id = s.item_status_id where s.item_status_desc = @status), item_ownership_type_id = (select distinct o.item_ownership_id from item_ownership_type o left join item_header h on o.item_ownership_id = h.item_ownership_type_id where o.item_ownership_desc = @ownership) ,market_segment_id = (select distinct m.market_segment_id from market_segment m left join item_header h on m.market_segment_id = h.market_segment_id where m.market_segment_name = @marketsegment) , mcs_code_id = (select distinct m.mcs_code_id from mcs_code m left join item_header h on m.mcs_code_id = h.mcs_code_id where m.mcs_code = @mcsid), item_type_id = (select distinct t.item_type_id from type_item t left join item_header h on t.item_type_id = h.item_type_id where t.item_type_desc = @typeid)," + 
      "author_person_id = (Select person_id from [persons] p where p.first_Name +' ' + p.last_Name= @specialist) where item_header_id = @OriginalHeaderID", con); 
      cmd1.Parameters.AddWithValue("@item_id", newIdTextBox.Text); 
      cmd1.Parameters.AddWithValue("@item_stem", stemTextBox.Text); 
      cmd1.Parameters.AddWithValue("@modified_by", createdByTextBox.Text); 
      cmd1.Parameters.AddWithValue("@old_item_id", oldItemIDTextBox.Text); 
      cmd1.Parameters.AddWithValue("@language", txtLanguage.Text); 
      cmd1.Parameters.AddWithValue("@status", itemStatusDDL.SelectedValue); 
      cmd1.Parameters.AddWithValue("@ownership", ownershipDDL.SelectedValue); 
      cmd1.Parameters.AddWithValue("@marketsegment", marketDDL.SelectedValue); 
      cmd1.Parameters.AddWithValue("@mcsid", txtMCSid.Text); 
      cmd1.Parameters.AddWithValue("@OriginalHeaderID", OriginalHeaderID); 
      cmd1.Parameters.AddWithValue("@specialist", authorTextBox.Text); 
      cmd1.Parameters.AddWithValue("@typeid", ddlType.SelectedValue); 
      cmd1.Parameters.AddWithValue("@solution", solutionTextBox.Text); 
      cmd1.ExecuteNonQuery(); 
      cmd1.Parameters.Clear(); 

      foreach (RepeaterItem item in RptOptions.Items) 
      { 

       var Option = (item.FindControl("Option") as TextBox).Text; 
       var OptionOrder = (item.FindControl("OptionOrder") as TextBox).Text.Replace("'", "''"); 
       var Key = (item.FindControl("Key") as CheckBox).Checked; 
       var itemDetailID = (item.FindControl("DetailID") as TextBox).Text; 
       //var ItemRefID = (item.FindControl("ItemRefID") as TextBox).Text.Replace("'", "''"); 


       var optionsCmd = new SqlCommand("MERGE item_detail AS [target] USING (VALUES(@OriginalHeaderID, @Option, @OptionOrder, @Key, @ItemDetailID)) AS source(sitemheaderid, soption, soptionorder, soptionkey, sItemDetailID) ON [target].item_header_id = source.sItemHeaderID AND [target].item_detail_id = source.sItemDetailID WHEN MATCHED THEN UPDATE SET [target].[option] = source.soption, [target].option_order = source.soptionorder, [target].option_key = source.soptionkey, [target].[weight] = source.soptionkey, [target].modified_datetime = GETDATE() WHEN NOT MATCHED THEN INSERT(item_header_id, [option], option_order, option_key,[weight], created_datetime) VALUES(source.sItemHeaderID, source.soption, source.soptionorder, source.soptionkey,source.soptionkey, getdate());", con); 

       optionsCmd.Parameters.AddWithValue("@ItemDetailID", itemDetailID); 
       optionsCmd.Parameters.AddWithValue("@Option", Option); 
       optionsCmd.Parameters.AddWithValue("@OptionOrder", OptionOrder); 
       optionsCmd.Parameters.AddWithValue("@Key", Key); 
       optionsCmd.Parameters.AddWithValue("@OriginalHeaderID", OriginalHeaderID); 
       //refsCmd.Parameters.AddWithValue("@ItemRefID", ItemRefID); 
       optionsCmd.ExecuteNonQuery(); 


      } 

      var deletedOptions = ViewState["deleteOptions"] as string; 
      if (!string.IsNullOrEmpty(deletedOptions)) 
      { 
       var deleteOptionsCmd = new SqlCommand("delete from item_detail where item_detail_id in (" + deletedOptions.Trim(',') + ")", con); 
       deleteOptionsCmd.ExecuteNonQuery(); 
      } 

      foreach (RepeaterItem item in RptRefs.Items) 
      { 

       var referenceid = (item.FindControl("refID") as TextBox).Text.Replace("'", "''"); 
       var pages = (item.FindControl("Pages") as TextBox).Text.Replace("'", "''"); 
       var Verification = (item.FindControl("Verification") as TextBox).Text.Replace("'", "''"); 
       var ItemRefID = (item.FindControl("ItemRefID") as TextBox).Text.Replace("'", "''"); 


       var refsCmd = new SqlCommand("MERGE item_reference AS [target] USING (VALUES(@OriginalHeaderID, @refID, @Pages, @Verification, @ItemRefID)) AS source(sItemHeaderID, sRefID, sPages, sVerification, sItemReferenceID) ON [target].item_header_id = source.sItemHeaderID AND [target].reference_id = source.sRefID AND [target].item_reference_id = source.sItemReferenceID WHEN MATCHED THEN UPDATE SET [target].[pages] = source.sPages, [target].verification = source.sVerification, [target].modified_datetime = GETDATE() WHEN NOT MATCHED THEN INSERT(item_header_id, reference_id, [pages], verification, created_datetime)VALUES(source.sItemHeaderID, source.sRefID, source.sPages, source.sVerification, getdate());", con); 

       refsCmd.Parameters.AddWithValue("@refID", referenceid); 
       refsCmd.Parameters.AddWithValue("@Pages", pages); 
       refsCmd.Parameters.AddWithValue("@Verification", Verification); 
       refsCmd.Parameters.AddWithValue("@OriginalHeaderID", OriginalHeaderID); 
       refsCmd.Parameters.AddWithValue("@ItemRefID", ItemRefID); 
       refsCmd.ExecuteNonQuery(); 


      } 

      var deletedRefs = ViewState["deleteRefs"] as string; 
      if (!string.IsNullOrEmpty(deletedRefs)) 
      { 
       var deleteRefsCmd = new SqlCommand("delete from item_reference where item_reference_id in (" + deletedRefs.Trim(',') + ")", con); 
       deleteRefsCmd.ExecuteNonQuery(); 
      } 

      foreach (RepeaterItem item in RptComments.Items) 
      { 

       //var commentid = (item.Controls[0] as TextBox).Text; 
       var comments = (item.FindControl("comments") as TextBox).Text.Replace("'", "''"); 
       var Specialist = (item.FindControl("Specialist") as TextBox).Text.Replace("'", "''"); 
       var ComID = (item.FindControl("ComID") as TextBox).Text.Replace("'", "''"); 

       var commentsCmd = new SqlCommand("MERGE item_comment AS target USING (Values (@ComID)) AS source(sItemCommentID) ON target.item_comment_id = source.sItemCommentID WHEN MATCHED THEN UPDATE SET target.comment = @comments WHEN NOT MATCHED THEN INSERT (item_header_id, comment, specialist_person_id, created_datetime) VALUES(@originalheaderid,@comments,(Select person_id from [persons] p where p.first_Name +' ' + p.last_Name = @Specialist),getdate());", con); 
       commentsCmd.Parameters.AddWithValue("@comments", comments); 
       commentsCmd.Parameters.AddWithValue("@Specialist", Specialist); 
       commentsCmd.Parameters.AddWithValue("@ComID", ComID); 
       commentsCmd.Parameters.AddWithValue("@OriginalHeaderID", OriginalHeaderID); 
       commentsCmd.ExecuteNonQuery(); 

      } 
      var deletedComments = ViewState["deleteComments"] as string; 
      if (!string.IsNullOrEmpty(deletedComments)) 
      { 
       var deleteCommentsCmd = new SqlCommand("delete from item_comment where item_comment_id in (" + deletedComments.Trim(',') + ")", con); 
       deleteCommentsCmd.ExecuteNonQuery(); 
      } 


      foreach (RepeaterItem item in RptEnemy.Items) 
      { 


       var enemyID = (item.FindControl("EnemyID") as TextBox).Text.Replace("'", "''"); 
       var enemyHeaderID = (item.FindControl("EnemyHeaderID") as TextBox).Text.Replace("'", "''"); 
       var ItemStem = (item.FindControl("ItemStem") as TextBox).Text.Replace("'", "''"); 
       var Type = (item.FindControl("Type") as TextBox).Text.Replace("'", "''"); 
       var TypeID = (item.FindControl("TypeID") as TextBox).Text.Replace("'", "''"); 
       var SocID = (item.FindControl("SocID") as TextBox).Text.Replace("'", "''"); 

       var enemyCmd = new SqlCommand("MERGE social_order AS target USING (VALUES (@OriginalHeaderID,@SocID, @EnemyHeaderID, @TypeID)) AS source(sItemHeaderID, sSocID, sEnemyItemHeaderID, sSocialOrderTypeID) ON target.item_header_id = source.sItemHeaderID AND target.related_item_header_id = source.sEnemyItemHeaderID WHEN MATCHED THEN UPDATE SET target.social_order_type_id = @TypeID, target.modified_datetime = GETDATE() WHEN NOT MATCHED THEN INSERT (item_header_id, related_item_header_id, social_order_type_id, created_datetime) VALUES (@OriginalHeaderID, @EnemyHeaderID, @TypeID, GETDATE());", con); 
       //enemyCmd.Parameters.AddWithValue("@EnemyID", enemyID); 
       enemyCmd.Parameters.AddWithValue("@EnemyHeaderID", enemyHeaderID); 
       //enemyCmd.Parameters.AddWithValue("@ItemStem", ItemStem); 
       //enemyCmd.Parameters.AddWithValue("@Type", Type); 
       enemyCmd.Parameters.AddWithValue("@TypeID", TypeID); 
       enemyCmd.Parameters.AddWithValue("@SocID", SocID); 
       enemyCmd.Parameters.AddWithValue("@OriginalHeaderID", OriginalHeaderID); 
       enemyCmd.ExecuteNonQuery(); 

      } 
      var deletedEnemies = ViewState["deleteEnemies"] as string; 
      if (!string.IsNullOrEmpty(deletedEnemies)) 
      { 
       var deleteEnemiesCmd = new SqlCommand("delete from social_order where soc_entry_id in (" + deletedEnemies.Trim(',') + ")", con); 
       deleteEnemiesCmd.ExecuteNonQuery(); 
      } 

      foreach (RepeaterItem item in RptExhibits.Items) 
      { 

       //var commentid = (item.Controls[0] as TextBox).Text; 
       var exhibitID = (item.FindControl("exhibitID") as TextBox).Text.Replace("'", "''"); 
       var itemExhibitID = (item.FindControl("ItemExID") as TextBox).Text.Replace("'", "''"); 
       //exhibitentry += "(" + headerid + "," + "'" + exhibitID + "'),"; 
       var CmdExhibits = new SqlCommand("MERGE item_exhibit AS target USING (VALUES (@OriginalHeaderID, @exhibitID, @itemExhibitID)) AS source(sItemHeaderID, sExhibitID, sItemExID) ON target.item_header_id = source.sItemHeaderID AND target.exhibit_id = source.sExhibitID and target.item_exhibit_id = source.sItemExID WHEN NOT MATCHED THEN INSERT (item_header_id, exhibit_id, created_datetime) VALUES (@OriginalHeaderID, @exhibitID, getdate());", con); 
       CmdExhibits.Parameters.AddWithValue("@exhibitID", exhibitID); 
       CmdExhibits.Parameters.AddWithValue("@OriginalHeaderID", OriginalHeaderID); 
       CmdExhibits.Parameters.AddWithValue("@itemExhibitID", itemExhibitID); 
       CmdExhibits.ExecuteNonQuery(); 
      } 
      var deletedExhibits = ViewState["deleteExhibits"] as string; 
      if (!string.IsNullOrEmpty(deletedExhibits)) 
      { 
       var deleteExhibitsCMD = new SqlCommand("delete from item_exhibit where item_exhibit_id in (" + deletedExhibits.Trim(',') + ")", con); 
       deleteExhibitsCMD.ExecuteNonQuery(); 
      } 


      //string reventry = ""; 
      //var cmdRevs = new SqlCommand("select item_header_id from item_header where item_id = @item_id", con); 
      //cmdRevs.Parameters.AddWithValue("@item_id", newIdTextBox.Text); 
      foreach (RepeaterItem item in RptRevision.Items) 
      { 
       var Change = (item.FindControl("Change") as TextBox).Text; 
       var Reason = (item.FindControl("Reason") as TextBox).Text; 
       var PersonID = (item.FindControl("PersonID") as TextBox).Text; 
       var Specialist = (item.FindControl("Specialist") as TextBox).Text; 
       var ItemRevID = (item.FindControl("IrID") as TextBox).Text; 

       var cmdRevisions = new SqlCommand("MERGE item_revision AS target USING (Values (@ItemRevID)) AS source(sItemRevisionID) ON target.item_revision_id = source.sItemRevisionID WHEN MATCHED THEN UPDATE SET target.change = @change, target.reason = @reason, target.specialist_person_id = (Select person_id from [persons] p where p.first_Name +' ' + p.last_Name = @Specialist) , target.modified_datetime = GETDATE() WHEN NOT MATCHED THEN INSERT (item_header_id, change, reason, specialist_person_id, created_datetime) VALUES(@OriginalHeaderID, @Change, @Reason, (Select person_id from [persons] p where p.first_Name +' ' + p.last_Name = @Specialist),getdate());", con); 
       cmdRevisions.Parameters.AddWithValue("@Change", Change); 
       cmdRevisions.Parameters.AddWithValue("@Reason", Reason); 
       cmdRevisions.Parameters.AddWithValue("@PersonID", PersonID); 
       cmdRevisions.Parameters.AddWithValue("@Specialist", Specialist); 
       cmdRevisions.Parameters.AddWithValue("@OriginalHeaderID", OriginalHeaderID); 
       cmdRevisions.Parameters.AddWithValue("@ItemRevID", ItemRevID); 
       cmdRevisions.ExecuteNonQuery(); 

       //reventry += "(" + headerid + "," + "'" + Change + "'," + "'" + Reason + "'," + "" + PersonID + "),"; 
      } 

      var deletedRevisions = ViewState["deleteRevisions"] as string; 
      if (!string.IsNullOrEmpty(deletedRevisions)) 
      { 
       var deleteRevisionsCmd = new SqlCommand("delete from item_revision where item_revision_id in (" + deletedRevisions.Trim(',') + ")", con); 
       deleteRevisionsCmd.ExecuteNonQuery(); 
      } 

      //confirmation message and clear form after hitting save. 
      string msgstring = "You Have Successfully Edited this item"; 
      string content = "window.onload=function(){ alert('"; 
      content += msgstring; 
      content += "');"; 
      content += "window.location='"; 
      content += Request.Url.AbsoluteUri; 
      content += "';}"; 
      ClientScript.RegisterStartupScript(this.GetType(), "SucessMessage", content, true); 
     } 
     catch (Exception ex) 
     { 
      ClientScript.RegisterStartupScript(this.GetType(), "ErrorMessage", "alert('" + ex.Message.Replace("'", "") + "'); ", true); 
     } 
     finally 
     { 
      con.Close(); 
     }   

}

+0

目前還不清楚你的代碼應該如何流動,但括號裏有一些明確的問題。你能發佈整個方法嗎? – Seano666

+0

該方法的其餘部分完全不同,查找空白的驗證是我卡住的地方。它相當長,但它是。謝謝你看看。 –

回答

0

於是我想出了一個辦法來得到這個工作,如果任何人添加的答案曾經遇到類似的問題。

var dtOptionsData = (DataSet)ViewState["dtOption"]; 
     for (var i = 0; i < RptOptions.Items.Count; i++) 
     { 
      var tbOptionOrder = (RptOptions.Items[i].FindControl("OptionOrder") as TextBox); 
      dtOptionsData.Tables[0].Rows[i]["Option Order"] = tbOptionOrder.Text; 

      if (tbOptionOrder.Text == "") 
      { 
       ScriptManager.RegisterClientScriptBlock(this, this.GetType(), 
        "alertMessage", 
        "alert('Please Enter Option Order');", true); 
       return; 
      } 
      if (tbOptionOrder.Text == "0") 
      { 
       ScriptManager.RegisterClientScriptBlock(this, this.GetType(), 
        "alertMessage", 
        "alert('Please Enter Option Order');", true); 
       return; 
      } 
     } 

     if (stemTextBox.Text == "") 
     { 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), 
       "alertMessage", 
       "alert('Please Enter a Stem');", true); 
      return; 
     } 

     try