如何在 SelectedIndexChanged Asp.NET C# 时防止重新键入信息
How to prevent re-type info when SelectedIndexChanged Asp.NET C#
我的 DropDrown SelectedIndexChanged 方法遇到问题,我编写了一个 Asp.NET DropDown 以根据所选选项填充文本框,但是该页面需要经过几个过程才能到达DropDown 按钮,因此 SelectedIndexChanged 工作正常,它填充我的文本框,但是在填充文本框后,页面运行 PostBack 并刷新整个站点,因此,radionbuttons 和我所做的所有选择都被删除,所以我需要填充它们重新开始并再次检查单选按钮,填写其他文本框并从头开始我的表单,除此之外页面加载就像我重新开始一样。
HTML
<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>
背后的代码
#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
页面加载
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();
}
}
有没有什么方法可以在不刷新页面的情况下填充我的文本框并且不会丢失我填写的所有信息?
提前致谢。
1。导致此问题的第一件事是 Page_Load
事件加载 在 控件事件(如按钮单击或下拉索引更改)之后。它可以通过使用 if (!IsPostBack)
来解决。
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 enable/disable。每个控件的ViewState可以单独设置
我认为:
ViewState 包含下拉菜单的 Selected Value,因此如果下拉菜单在不同的索引中有重复的值,则在页面加载后将不知道真正选择的索引。
我的 DropDrown SelectedIndexChanged 方法遇到问题,我编写了一个 Asp.NET DropDown 以根据所选选项填充文本框,但是该页面需要经过几个过程才能到达DropDown 按钮,因此 SelectedIndexChanged 工作正常,它填充我的文本框,但是在填充文本框后,页面运行 PostBack 并刷新整个站点,因此,radionbuttons 和我所做的所有选择都被删除,所以我需要填充它们重新开始并再次检查单选按钮,填写其他文本框并从头开始我的表单,除此之外页面加载就像我重新开始一样。
HTML
<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>
背后的代码
#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
页面加载
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();
}
}
有没有什么方法可以在不刷新页面的情况下填充我的文本框并且不会丢失我填写的所有信息?
提前致谢。
1。导致此问题的第一件事是 Page_Load
事件加载 在 控件事件(如按钮单击或下拉索引更改)之后。它可以通过使用 if (!IsPostBack)
来解决。
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 enable/disable。每个控件的ViewState可以单独设置
我认为: ViewState 包含下拉菜单的 Selected Value,因此如果下拉菜单在不同的索引中有重复的值,则在页面加载后将不知道真正选择的索引。