Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在回发之前存储值_C#_Asp.net - Fatal编程技术网

C# 如何在回发之前存储值

C# 如何在回发之前存储值,c#,asp.net,C#,Asp.net,我有两个下拉列表,ddlstates和ddlcity ddlstates有一个巴西州列表,单击该列表时,会将该州的城市加载到DDLCITY。在此之前,一切都正常工作,但当单击“保存”按钮以验证是否已完成字段时,DDLCITY返回到第一个选项。回发前如何存储信息 在代码隐藏中,具有加载DDLCITY的代码: protected void ddlstates_TextChanged(object sender, EventArgs e) { if (ddlstates.Text != "")

我有两个下拉列表,ddlstates和ddlcity

ddlstates有一个巴西州列表,单击该列表时,会将该州的城市加载到DDLCITY。在此之前,一切都正常工作,但当单击“保存”按钮以验证是否已完成字段时,DDLCITY返回到第一个选项。回发前如何存储信息

在代码隐藏中,具有加载DDLCITY的代码:

protected void ddlstates_TextChanged(object sender, EventArgs e)
{
    if (ddlstates.Text != "")
    {
        List<ListItem> cidades = new List<ListItem>();               
        SqlConnection conn = new SqlConnection(mytools.stringconection);
        SqlDataReader dr = null;
        conn.Open();
        SqlCommand cmd = new SqlCommand("select ciddesc from cidades where cidestsigla = '" + ddlstates.SelectedValue.ToString() + "' order by 1 asc");
        cmd.Connection = conn;
        dr = cmd.ExecuteReader();
        ddlcitys.Items.Clear();
        while (dr.Read())
        {
            cidades.Add(new ListItem(dr[0].ToString()));
        }
        dr.Close();
        conn.Close();
        ddlcitys.DataTextField = "Text";
        ddlcitys.DataValueField = "Value";
        ddlcitys.DataSource = cidades;
        ddlcitys.DataBind();
    } 
}
protectedvoidddlstates\u text已更改(对象发送方,事件参数e)
{
如果(ddlstates.Text!=“”)
{
List cidades=新列表();
SqlConnection conn=新的SqlConnection(mytools.stringconconnection);
SqlDataReader dr=null;
conn.Open();
SqlCommand cmd=new SqlCommand(“从CIDDES中选择ciddesc,其中cidestsigla='”+DDLSATES.SelectedValue.ToString()+“'order by 1 asc”);
cmd.Connection=conn;
dr=cmd.ExecuteReader();
ddlcity.Items.Clear();
while(dr.Read())
{
添加(新列表项(dr[0].ToString());
}
Close博士();
康涅狄格州关闭();
ddlcitys.DataTextField=“Text”;
ddlcity.DataValueField=“Value”;
ddlcitys.DataSource=cidades;
ddlcity.DataBind();
} 
}

很久以前有人问过,不管怎样,这个答案对任何人都有帮助

在绑定任何dropdownlists之前,在页面加载事件上,确保不回发,然后在下拉列表上选择change events,下拉列表值不会重新绑定,因此值不会更改

提示:确保您的aspx页面处于启用视图状态(默认情况下已启用)


如果页面没有从
回发返回,只需将
结果绑定到
下拉列表
<代码>如果(ddlstates.Text!=“&&&!IsPostBack())
我希望这只是您的代码示例。否则,请不要忘记使用参数化查询:
 protected void Page_Load(object sender, EventArgs e) {
 if (!IsPostBack) {
  //this will called when your page loaded at first time, so bind your drop down values here.
 } else {
  //this will called on select change, don't bind your dropdown again, then values will be same (asp.net web forms viewstates will handle read more about viewstate). 
 }
}