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();
}
}
目前還不清楚你的代碼應該如何流動,但括號裏有一些明確的問題。你能發佈整個方法嗎? – Seano666
該方法的其餘部分完全不同,查找空白的驗證是我卡住的地方。它相當長,但它是。謝謝你看看。 –