在以下代码中
protected void Page_Load(object sender, EventArgs e)
{
List<string> listSetValues = Class1.categories();
foreach (string strTemp in listSetValues)
{
DIV1.Controls.Add(new LiteralControl("<li>" + strTemp + "</li>"));
}
}
和类代码是
protected static List<string> listSetValues = new List<string>();
public static List<string> categories()
{
cmd = new SqlCommand("SELECT * FROM category", con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
listSetValues.Add(dr[0].ToString());
}
con.Close();
return listSetValues;
}
数据库表类别包含
Mobiles
DVD players
Cameras
Laptops
Televisions
在加载页面时,以上所有内容都显示在我的网站上,但在重新加载时,上面的五个值会显示两次,每次重新加载时,5个值的值都会不断增加。
答案 0 :(得分:1)
为此,您必须在每次加载时初始化List .......
List<string> listSetValues =new List<string>();
listSetValues = Class1.categories();
foreach (string strTemp in listSetValues)
{
categories.Controls.Add(new LiteralControl("<li>" + strTemp + "</li>"));
}
在方法代码中,
public static List<string> categories()
{
List<string> listSetValues = new List<string>();
cmd = new SqlCommand("SELECT * FROM category", con);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
listSetValues.Add(dr[0].ToString());
}
con.Close();
return listSetValues;
}
答案 1 :(得分:0)
问题是每次回发到服务器时,都会将相同的项添加到列表中并将控件绑定到数据。
要避免这种情况,您必须在Page_Load方法中
调用加载数据方法,如
if(!IsPostBack)
{
LoadData();
}
这样做只会绑定您的列表一次,即第一次加载页面时不会绑定到服务器的其他回发。
希望这有帮助。