在我的页面上,我有3个文本框,其中包含标题,说明,提示和关键字的值。当我单击一个按钮时,它会将值插入数据库。当它回发时,值保留在文本框中,这就是我想要的。 页面的下一部分包含Question,CorrectAnswer,Wrong1,Wrong2,Wrong3的文本框。当我点击按钮将它们插入到数据库中时,这是有效的,并且在按钮触发其事件后,我将这5个文本框的文本值设置为null,因此我可以继续添加问题和答案。 但是当该按钮导致其回发时,第一个文本框中的值会消失,我不希望这样,因为我在标题文本框上进行了验证,因为您无法在文本框中添加任何没有标题的问题和答案。 那么当第二个按钮导致回发时,如何将值保留在第一个文本框中? 这是两个按钮的代码,btnAddQandA是导致回发的按钮..
protected void btnAddQuizTitle_Click(object sender, EventArgs e)
{
daccess.AddQuizName(tbTitle.Text, taDescription.InnerText, taTips.InnerText, tbKeywords.Text);
Session["TheQuizID"] = daccess.TheID;
string myID = (string)(Session["TheQuizID"]);
int theID = Int32.Parse(myID);
if (tbKeywords.Text != null)
{
string TheKeywordHolder = "";
foreach (ListItem LI in cblGrades.Items)
{
if (LI.Selected == true)
{
TheKeywordHolder = TheKeywordHolder + LI.Value + ",";
}
}
daccess.AddQuizKeywords(theID, tbKeywords.Text);
}
}
protected void btnAddQA_Click(object sender, EventArgs e)
{
int theID = (int)Session["TheQuizID"];
daccess.AddQuizQA(tbQuestion.Text, tbCorrect.Text, tbWrong1.Text, tbWrong2.Text, tbWrong3.Text, theID);
tbQuestion.Text = null;
tbCorrect.Text = null;
tbWrong1.Text = null;
tbWrong2.Text = null;
tbWrong3.Text = null;
}
这是我的页面加载事件
DataAccess daccess = new DataAccess();
protected void Page_Load(object sender, EventArgs e)
{
daccess.CblGradesDS();
cblGrades.DataSource = daccess.DsCbl;
cblGrades.DataValueField = "GradeID";
cblGrades.DataTextField = "Grade";
cblGrades.RepeatColumns = 8;
cblGrades.RepeatDirection = RepeatDirection.Horizontal;
cblGrades.DataBind();
daccess.CblSubjectsDS();
cblSubjects.DataSource = daccess.DsCbl2;
cblSubjects.DataValueField = "SubjectID";
cblSubjects.DataTextField = "SubjectName";
cblSubjects.RepeatColumns = 4;
cblSubjects.RepeatDirection = RepeatDirection.Horizontal;
cblSubjects.DataBind();
if (!IsPostBack)
{
}
}
答案 0 :(得分:0)
这些问题通常是由回发之前和之后不匹配的控件ID(特定的UniqueID)引起的。这导致无法在视图状态中查找值。当您修改控件集合(通常在代码隐藏中)或更改控件的可见性时,会发生这种情况。当尚未填充viewstate时,在Page_Load事件之前修改ID时,也可能会发生这种情况。了解ASP.NET生命周期的工作原理很好。 http://spazzarama.com/wp-content/uploads/2009/02/aspnet_page-control-life-cycle.jpg