首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当SelectedIndexChanged Asp.NET C#时如何防止重新键入信息

当SelectedIndexChanged Asp.NET C#时如何防止重新键入信息
EN

Stack Overflow用户
提问于 2018-06-03 02:31:09
回答 1查看 106关注 0票数 1

我遇到了一个DropDrown SelectedIndexChanged方法的问题,我已经编写了一个Asp.NET DropDown来根据选择的选项填充一个文本框,但是页面需要经过几个过程才能到达DropDown按钮,所以SelectedIndexChanged工作得很好,它填充了我的文本框,但是在填充文本框之后,页面运行PostBack并刷新整个站点,因此,单选按钮和我所做的所有选择都被删除了,所以我需要重新填充它们并再次检查单选按钮,填充其他文本框并从头开始我的表单,此外,页面加载就像我重新开始一样。

HTML

代码语言:javascript
复制
<div class="form-group">
   <label for="name" class="text-muted"><small><strong>Código del cliente:</strong></small></label>
       <asp:DropDownList AutoPostBack="true" ID="ddClientCode" OnSelectedIndexChanged="ddClientCode_SelectedIndexChanged" runat="server" CssClass="form-control input-sm btn-box-tool"></asp:DropDownList>
    </div>
       <div class="form-group">
       <label for="name" class="text-muted"><small><strong>Persona jurídica:</strong></small></label>
       <asp:TextBox ID="TxtLegalPerson1" CssClass="form-control" runat="server" placeholder="Persona jurídica" />
       </div>

背后的代码

代码语言:javascript
复制
#region Populate Textboxes Based On Selected Index Client
    protected void ddClientCode_SelectedIndexChanged(object sender, EventArgs e)
    {
        string CLIENTE = ddClientCode.SelectedValue.ToString();
        TxtLegalPerson1.Text = BindCedulaJuridica(CLIENTE);
    }
    #endregion

    #region Bind [Cedula Juridica] based on ddClientCode
    public string BindCedulaJuridica(string x)
    {
        string returnValue = string.Empty;
        try
        {
            string constr = ConfigurationManager.ConnectionStrings["wiz"].ConnectionString;
            using (IDbConnection connection = new SqlConnection(constr))
            {
                connection.Open();
                using (IDbCommand command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT Column FROM TABLE AS A where Client= '" + x + "'";
                    using (IDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            returnValue = reader["Column"].ToString();
                        }

                        if (connection.State == ConnectionState.Open)
                        {
                            connection.Close();
                        }
                        return returnValue;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            string err = ex.ToString();
        }
        return returnValue;
    }
    #endregion

页面加载

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
    {
        #region User Validation
        string Group = (string)(Session["Group"]);
        switch (Group)
        {
            case "a":
                //Response.Redirect("/Dashboard");//This is temporal
                break;
            case "b":
                //Response.Redirect("/Dashboard");
                break;
            case "c":
                Response.Write("<script>alert('¡Lo sentimos, usted no cuenta con privilegios para crear reportes!');</script>");
                Response.Redirect("/Dashboard");
                break;
            case "d"://Check this name with the database
                //Response.Redirect("/Dashboard");
                break;
            default:
                break;
        }
        #endregion

        if (!IsPostBack)
        {
            this.FillTypes();
            this.FillStatationsDropDown();
            this.FillVehiculeCode();
            this.FillddOutAgency();
            this.FillddInAgency();
            this.FillCustomers();
        }
    }

有没有办法在不刷新页面的情况下填充我的文本框,也不会丢失我填写的所有信息?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-03 03:15:33

1。导致这个问题的第一件事是在控件事件之后加载Page_Load事件,比如按钮单击或下拉索引更改。它可以通过使用您使用的if (!IsPostBack)来解决。

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
    //if you have some default value settings for the dropdown, write here.
    }
}

2。当你的页面回发时,你有了一个新的页面。唯一能让你的控件保持旧值的就是ViewState。ViewState是一个字符串,它包含一些用于设置页面的数据。所有控件都从页面继承viewState启用/禁用。可以单独设置每个控件的ViewState。

我认为:ViewState包含下拉列表的选定值,所以如果下拉列表在不同的索引中有重复的值,那么在页面加载之后,它将是未知的真正选择的索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50659969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档