背景:
我有两个页面使用相似的代码,如果不是它们调用的函数名称,这些组件的按钮名称将是相同的。然而,在一页上,一个按钮可以完美地工作,而另一个则触发两次。在另一页上,该按钮只有在您再次单击(页面重新加载之后)才会触发。
我可能在语义或语法上缺少某些内容,但是通常,如果我在某处使用某项内容,那么它在所有地方都可以使用,并且如果我在某处没有使用某项内容,那么它将无法使用。任何地方。在这种情况下,我的结果不一致...我认为这在字面上是违反逻辑的。
下面,首先我有一些代码片段构成了我的工作按钮。下面是我无法使用的按钮的代码。我现在将忽略两次触发的按钮。
工作代码:第1页
protected void navigateView(object sender, EventArgs e) //***Fires upon single click***
{
LinkButton lb = (LinkButton)sender;
setCurrentlySelectedRecord(lb.CommandArgument);
setViewEdit("View");
Server.Transfer("Page2.aspx");
}
accessRecord()
{
...
HtmlTable myTable = new HtmlTable();
...
HtmlTableRow newRow;
HtmlTableCell cell;
LinkButton saveButton; newRow = new HtmlTableRow();
newRow.BgColor = "black"; myTable.Rows.Add(newRow);
cell = new HtmlTableCell(); cell.BgColor = "black";
LinkButton viewEditBtn = new LinkButton();
viewEditBtn.ID = "viewEdit"+rowCount; viewEditBtn.Visible = true;
viewEditBtn.CommandArgument = ECRID;
viewEditBtn.BackColor = Color.Teal; viewEditBtn.ForeColor = Color.Yellow; viewEditBtn.BorderColor = Color.Yellow;
viewEditBtn.BorderStyle = BorderStyle.Solid; viewEditBtn.BorderWidth = 2; viewEditBtn.Width = 40;
viewEditBtn.Attributes.Add("style", "text-align:center; border-color: yellow orange orange yellow; text-decoration:none");
if (userStatus == "readonly")
{
viewEditBtn.Text = "View";
viewEditBtn.Click += new EventHandler(navigateView);
}
else
{
viewEditBtn.Text = "Edit";
viewEditBtn.Click += new EventHandler(navigateEdit);
}
cell.Controls.Add(viewEditBtn);
newRow.Cells.Add(cell);
...
}
protected void Page_Load(object sender, EventArgs e)
{
accessRecord();
}
这就像一个护身符。它将我导航到我想每次使用所需值访问的页面。
但是,当对另一页上的另一个按钮使用类似的格式时,它会重新加载页面,而不是触发按钮定义中列出的方法。然后,我必须再次按下按钮才能循环记录。
无效代码:第2页
protected void cycleDesc(object sender, EventArgs e) //***Fires upon second click***
{
cycleRecord("Desc");
}
protected void cycleAsc(object sender, EventArgs e) //***Fires upon second click***
{
cycleRecord("Asc");
}
protected void cycleRecord(string cycleDirection)
{...logic that calls the database to fetch the next record...
setCurrentlySelectedRecord(nextRecord);//this sets the next value into the session variable
Server.Transfer("Page2.aspx");
}
protected void loadRecordCycleButtons()
{
PrvBTN_PH.Controls.Clear();
NextBTN_PH.Controls.Clear();
LinkButton prev_BTN = new LinkButton();
prev_BTN.ID = "prev_BTN";
prev_BTN.Text = "Previous"; prev_BTN.Visible = true;
prev_BTN.BackColor = Color.Turquoise; prev_BTN.ForeColor = Color.Black; prev_BTN.BorderColor = Color.Gray;
prev_BTN.BorderStyle = BorderStyle.Solid; prev_BTN.BorderWidth = 2; prev_BTN.Width = 100;
prev_BTN.Attributes.Add("style", "text-align:center; border-color: silver gray gray silver; text-decoration:none");
prev_BTN.Click += new EventHandler(cycleDesc);
PrvBTN_PH.Controls.Add(prev_BTN);
LinkButton next_BTN = new LinkButton();
next_BTN.ID = "next_BTN";
next_BTN.Text = "Next"; next_BTN.Visible = true;
next_BTN.BackColor = Color.Red; next_BTN.ForeColor = Color.Black; next_BTN.BorderColor = Color.Gray;
next_BTN.BorderStyle = BorderStyle.Solid; next_BTN.BorderWidth = 2; next_BTN.Width = 100;
next_BTN.Attributes.Add("style", "text-align:center; border-color: silver gray gray silver; text-decoration:none");
next_BTN.Click += new EventHandler(cycleAsc);
NextBTN_PH.Controls.Add(next_BTN);
}
protected void Page_Load(object sender, EventArgs e) //***Clicking the button once results in this firing again***
{
loadRecord();
loadRecordCycleButtons();
}
这令人困惑,我希望获得一些指导以使它们始终如一地工作。