C# 单击“提交”按钮后,ASP.NET组合框为空
我从数据库中加载Combobox。首先,当页面加载时,我的列表中会充满数据。 当我点击提交按钮时,我的列表变为空。 我在代码中做错了什么C# 单击“提交”按钮后,ASP.NET组合框为空,c#,asp.net,.net,C#,Asp.net,.net,我从数据库中加载Combobox。首先,当页面加载时,我的列表中会充满数据。 当我点击提交按钮时,我的列表变为空。 我在代码中做错了什么 public void ListCategory() { using (SqlConnection conn = new SqlConnection(CS)) { //SqlCommand cmd = new SqlCommand("select distinct category FROM ka
public void ListCategory()
{
using (SqlConnection conn = new SqlConnection(CS))
{
//SqlCommand cmd = new SqlCommand("select distinct category FROM kategorija", conn);
conn.Open();
SqlDataAdapter da = new SqlDataAdapter("select distinct category FROM kategorija", conn);
DataSet ds = new DataSet();
DataTable dt = new DataTable();
da.Fill(ds);
ASPxComboBox1.Columns[0].Caption = "Категорија";
ASPxComboBox1.Columns[0].FieldName = "Category";
ASPxComboBox1.DataSource = ds;
ASPxComboBox1.DataBind();
}
}
在页面加载时,我也会这样做
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ListCategory();
}
}
试一试
试一试
当您按下按钮时,您正在执行
回发
。条件(!IsPostBack)
表示“如果不是在回发之后,请执行此操作”。但是,您正在尝试进行回发,因此这种情况很愚蠢(因为当您进行回发时,会话中未包含的所有内容都将丢失)
您需要将其移出该状态:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Other stuff done only once during the page initialization
}
ListCategory();
}
或者使用会话来记住组合框值。当您按下按钮时,您正在执行
回发操作。条件(!IsPostBack)
表示“如果不是在回发之后,请执行此操作”。但是,您正在尝试进行回发,因此这种情况很愚蠢(因为当您进行回发时,会话中未包含的所有内容都将丢失)
您需要将其移出该状态:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Other stuff done only once during the page initialization
}
ListCategory();
}
或者使用会话来记住组合框值。使用ASP.NET webforms ViewState,加载到表单中的数据将在回发后保留。因此,通常情况下,检查回发条件的代码是有效的,并且工作正常。但是,其他因素(如禁用viewstate或在代码的其他区域操纵控件)可能会影响回发后的结果
protected void Page_Load(object sender, EventArgs e)
{
GridView1.ViewStateMode = ViewStateMode.Disabled;//now a postback will lose data
if (!IsPostBack)
{
GridView1.DataSource = new List<string> { "a", "b" };
GridView1.DataBind();
}
}
受保护的无效页面加载(对象发送方,事件参数e)
{
GridView1.ViewStateMode=ViewStateMode.Disabled;//现在回发将丢失数据
如果(!IsPostBack)
{
GridView1.DataSource=新列表{“a”,“b”};
GridView1.DataBind();
}
}
在这种情况下,您可以删除IsPostBack
检查或重新启用viewstate。如果问题出在您尚未显示的另一个代码区域,则最好通过使用ASP.NET webforms ViewState删除对IsPostBack
的检查来修复该代码,而不是依赖低效的设计。请声明加载到表单中的数据将在回发后保留。因此,通常情况下,检查回发条件的代码是有效的,并且工作正常。但是,其他因素(如禁用viewstate或在代码的其他区域操纵控件)可能会影响回发后的结果
protected void Page_Load(object sender, EventArgs e)
{
GridView1.ViewStateMode = ViewStateMode.Disabled;//now a postback will lose data
if (!IsPostBack)
{
GridView1.DataSource = new List<string> { "a", "b" };
GridView1.DataBind();
}
}
受保护的无效页面加载(对象发送方,事件参数e)
{
GridView1.ViewStateMode=ViewStateMode.Disabled;//现在回发将丢失数据
如果(!IsPostBack)
{
GridView1.DataSource=新列表{“a”,“b”};
GridView1.DataBind();
}
}
在这种情况下,您可以删除IsPostBack
检查或重新启用viewstate。如果问题在于您没有显示的另一个代码区域,那么最好修复该代码,而不是依赖低效的设计,方法是取消对IsPostBack
的检查,将数据源绑定到之外!回发
检查 将数据源绑定到之外!回发
检查 必须将ListCategory()移到if(!IsPostBack)条件之外。这是因为您正在进行回发,因此显然不会再次输入数据。我假设您已禁用控件的viewstate?您必须将ListCategory()移到if(!IsPostBack)条件之外。这是因为您正在进行回发,因此显然不会再次输入数据。我假设您已禁用控件的viewstate?如何使用此会话?你能给我举个例子吗?这很有效。但是我丢失了所选的值。我需要获取所选值才能在查询中使用它。感谢you@Barlet您可以阅读如何使用此会话?你能给我举个例子吗?这很有效。但是我丢失了所选的值。我需要获取所选值才能在查询中使用它。感谢you@Barlet你可以读到