私は当惑しています。おそらく、pageLoad、IsPostBack、または IsCallback のプロパティに精通しているだけかもしれません。「 first 」というブール変数を作成し、それをTrueに設定しました。初めて PageLoad を使用すると、first = Falseの場合はコード行があり、そうであればwrite = trueです。次に、Run_write ルーチンをボタンにアタッチし、実行時にユーザーが最初の質問に「はい」と答えた場合、ラジオ ボタンの別のグループを表示し、最初に falseに設定します。(私はこれをデバッグで実行しましたが、このコード行にヒットすることはわかっています) ... write == false であるため、sql への書き込みは無視され 、新しいボタンのセットでウィンドウが再表示されます... すばらしい!
さらに、PageLoad ルーチンを再度実行すると、if (!first), set write を TRUE に設定する行にヒットします。私の問題は最初にtrueにリセットされましたか? 私は何が欠けていますか?新しいボタンのセットがチェックされているかどうかを利用することでこれを回避できましたが、このルートには行きたくないかもしれません。何が起こっているのかを理解したいと思います。
コードは以下です。
namespace MEAU.Web.Components.SupportCenter
{
public partial class feedback : System.Web.UI.Page
{
String login;
String myurl;
String response;
String s_call;
String p_ship;
String wrnty;
Boolean write;
Boolean first = true;
protected void Page_Load(object sender, EventArgs e)
{
login = Sitecore.Security.Accounts.User.Current.Profile.Email;
myurl = Request.QueryString["value"];
s_call = "No";
p_ship = "No";
wrnty = "No";
// Hide the question Buttons
scall.Visible = false;
parts.Visible = false;
wrnt.Visible = false;
lit.Visible = false;
write = false;
if (!first)
write = true;
}
protected void Run_Write(object sender, EventArgs e)
{
// Get Reponse
if (yes.Checked)
{
response = "Yes";
// Display the quesiton buttons, and Hide the NO button
scall.Visible = true;
parts.Visible = true;
wrnt.Visible = true;
lit.Visible = true;
no.Visible = false;
first = false;
// Did this Prevent a Service call?
if (scall.Checked)
{
s_call = "Yes";
write = true;
}
// Did this Prevent a parts shipment?
if (parts.Checked)
{
p_ship = "Yes";
write = true;
}
// Is this under warranty?
if (wrnt.Checked)
{
wrnty = "Yes";
write = true;
}
// write = true;
}
if (no.Checked)
{
response = "No";
write = true;
}
if (write == true)
{
SqlConnection conn = new SqlConnection(Sitecore.Configuration.Settings.GetConnectionString("feedback"));
SqlCommand cmd = new SqlCommand("Insert_fb", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@login", login);
cmd.Parameters.AddWithValue("@url", myurl);
cmd.Parameters.AddWithValue("@response", response);
cmd.Parameters.AddWithValue("@dateTime", DateTime.Now);
cmd.Parameters.AddWithValue("@serviceCall", s_call);
cmd.Parameters.AddWithValue("@partsShipment", p_ship);
cmd.Parameters.AddWithValue("@warranty", wrnty);
try
{
conn.Open();
cmd.ExecuteNonQuery();
Response.Write("<script type='text/javascript'>parent.$.fancybox.close();</script>");
Response.Write("<script type='text/javascript'>return false;</script>");
}
catch (Exception ex)
{
throw new Exception("Error on file update" + ex.Message);
}
finally
{
conn.Close();
}
}
}
}
}