If / else statement ASP.NET C#
本文关键字:NET ASP statement else If | 更新日期: 2023-09-27 18:21:47
目前,我正在尝试创建一个ASP.NET页面,该页面将根据您选择的类别按钮在列表框中列出某个类别中的书籍,然后我有另外两个按钮(一个用于DESC顺序,一个用于ASC顺序)。现在的问题是,当我在点击虚构按钮并填充列表框后点击ASC或DESC按钮时,它会擦除列表框,并将我带回页面加载事件。
我尝试过将填充项目移动到页面加载事件,当我完成所有操作时,一切都很完美,但由于某种原因,当通过其他按钮点击时,它根本不起作用。
我对ASP.NET很陌生,所以非常欢迎简单或"新手友好"的解释和代码示例/修复!
提前感谢!
下方的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class partin : System.Web.UI.Page
{
private List<String> books = new List<String>();
public void Page_PreRender()
{
Item_Listbox.DataSource = books;
Item_Listbox.DataBind();
}
int SortASC(string x, string y)
{
return String.Compare(x, y);
}
int SortDESC(string x, string y)
{
return String.Compare(x, y) * -1;
}
protected void Page_Load(object sender, EventArgs e)
{
Header_Label.Text = "Welcome! Please select a book category.";
}
protected void Fiction_Click(object sender, EventArgs e)
{
Header_Label.Text = "Fiction Section";
books.Add("Title: The Old Man and The Sea | Decription: An epic novel. | Price: 10 USD | Quantity: 3");
books.Add("Title: A Game of Thrones | Decription: A tale of fire and ice. | Price: 15 USD | Quantity: 6");
books.Add("Title: Dracula | Decription: A book about vampires. | Price: 5 USD | Quantity: 7");
books.Add("Title: Twilight | Decription: An awful book. | Price: Free | Quantity: 1000");
}
protected void Non_Fiction_Click(object sender, EventArgs e)
{
Header_Label.Text = "Non-Fiction Section";
}
protected void Self_Help_Click(object sender, EventArgs e)
{
Header_Label.Text = "Self Help Section";
}
protected void Sort_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "Sort")
{
switch (e.CommandArgument.ToString())
{
case "ASC":
books.Sort(SortASC);
break;
case "DESC":
books.Sort(SortDESC);
break;
}
}
}
}
编辑:感谢您的帖子,它不再直接返回页面加载事件,并将标签中的更改保留为"虚构",但当我单击ASD或DESC按钮时,它仍在重新设置列表框中的数据。
您需要检查Page_Load:中是否存在回发
if(!IsPostBack){
Header_Label.Text = "Welcome! Please select a book category";
//put your prerender logic in here, too...to populate the list of books.
}
Page_Load每次都会触发。您通常将页面初始化逻辑放在那里,但对于回发(如按钮单击),您不希望重新运行初始代码。因此,在那里检查页面是否处于回发状态(IsPostback==true);如果不是,则初始化页面。否则,让页面在回发期间根据ViewState中存储的内容进行渲染。
尝试将Page_PreRender中的代码放入Page_Load
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Header_Label.Text = "Welcome! Please select a book category.";
Item_Listbox.DataSource = books;
Item_Listbox.DataBind();
}
}
对于排序方法,添加数据绑定
protected void Sort_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "Sort")
{
switch (e.CommandArgument.ToString())
{
case "ASC":
books.Sort(SortASC);
break;
case "DESC":
books.Sort(SortDESC);
break;
}
}
Item_Listbox.DataSource = books;
Item_Listbox.DataBind();
}
检查页面加载和排序命令修改事件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class partin : System.Web.UI.Page
{
private List<String> books = new List<String>();
public void Page_PreRender()
{
Item_Listbox.DataSource = books;
Item_Listbox.DataBind();
}
int SortASC(string x, string y)
{
return String.Compare(x, y);
}
int SortDESC(string x, string y)
{
return String.Compare(x, y) * -1;
}
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
Header_Label.Text = "Welcome! Please select a book category.";
Item_Listbox.DataSource = books;
Item_Listbox.DataBind();
}
}
protected void Fiction_Click(object sender, EventArgs e)
{
Header_Label.Text = "Fiction Section";
books.Add("Title: The Old Man and The Sea | Decription: An epic novel. | Price: 10 USD | Quantity: 3");
books.Add("Title: A Game of Thrones | Decription: A tale of fire and ice. | Price: 15 USD | Quantity: 6");
books.Add("Title: Dracula | Decription: A book about vampires. | Price: 5 USD | Quantity: 7");
books.Add("Title: Twilight | Decription: An awful book. | Price: Free | Quantity: 1000");
}
protected void Non_Fiction_Click(object sender, EventArgs e)
{
Header_Label.Text = "Non-Fiction Section";
}
protected void Self_Help_Click(object sender, EventArgs e)
{
Header_Label.Text = "Self Help Section";
}
protected void Sort_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "Sort")
{
switch (e.CommandArgument.ToString())
{
case "ASC":
books.Sort(SortASC);
break;
case "DESC":
books.Sort(SortDESC);
break;
}
}
Item_Listbox.DataSource = books;
Item_Listbox.DataBind();
}
}