Tengo una lista desplegable en asp.net Cuando hago clic en una opción, debo obtener el valor seleccionado, luego pasarlo a una base de datos y luego usar los resultados de la consulta para poblar una segunda lista desplegable.Seleccione Option Change DropdownList C# ASP.NET Fire Event
Parece que no puedo "disparar" este evento cuando hago clic en el primer menú desplegable. A continuación se muestra lo que tengo:
Código ASPX
<td class="style3">
<asp:DropDownList ID="Currencies" runat="server"
onselectedindexchanged="Currencies_SelectedIndexChanged">
</asp:DropDownList>
</td>
<td>
</td>
</tr>
<tr>
<td class="style2">
Payment Mode</td>
<td class="style3">
<asp:DropDownList ID="PaymentModes" runat="server">
</asp:DropDownList>
</td>
código C# CodeBehind
String conn = WebConfigurationManager.ConnectionStrings["pvconn"].ToString();
protected void Page_Load(object sender, EventArgs e)
{
populatecurrencylist();
}
public void populatecurrencylist()
{
SqlCommand sql = new SqlCommand("SELECT * FROM CURRENCIES_TBL ORDER BY Currency_Initials",new SqlConnection(conn));
sql.Connection.Open();
SqlDataReader listcurrencies;
listcurrencies = sql.ExecuteReader();
Currencies.DataSource = listcurrencies;
Currencies.DataTextField = "Currency_Initials";
Currencies.DataValueField = "Currency_Group_ID";
Currencies.DataBind();
sql.Connection.Close();
sql.Connection.Dispose();
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
}
protected void Currencies_SelectedIndexChanged(object sender, EventArgs e)
{
var currid = Currencies.SelectedValue;
HttpContext.Current.Response.Write(currid);
//int currid = 0;
try
{
SqlCommand sql = new SqlCommand("SELECT * FROM PAYMENT_MODES_TBL WHERE Currency_ID = @currencyid", new SqlConnection(conn));
SqlParameter param0 = new SqlParameter();
param0.ParameterName = "@currencyid";
param0.SqlDbType = System.Data.SqlDbType.Int;
param0.Value = currid;
sql.Parameters.Add(param0);
sql.Connection.Open();
SqlDataReader listpaymodes;
listpaymodes = sql.ExecuteReader();
PaymentModes.DataSource = listpaymodes;
PaymentModes.DataTextField = "Payment_Mode";
PaymentModes.DataValueField = "Paying_Account_Code";
PaymentModes.DataBind();
sql.Connection.Close();
sql.Connection.Dispose();
}
catch(Exception s)
{
HttpContext.Current.Response.Write("Error Occured " + s.Message);
}
}
puedo poblar la primera lista desplegable sin ningún problema. El segundo es lo que parece no funcionar. Muy nuevo en ASP.NET. Vengo de un fondo PHP donde esto se lograría fácilmente usando jquery ajax, pero quiero aprender C#.
Cualquier ayuda apreciada.
EDITAR
Todas las respuestas sugieren que hago las monedas lista desplegable para AutoPostBack = true
que haya hecho lo:
<asp:DropDownList ID="Currencies" runat="server" AutoPostBack="True"
onselectedindexchanged="Currencies_SelectedIndexChanged">
</asp:DropDownList>
pero todavía parece no trabajar. En una nota lateral, la página se recarga y mi opción de menú de selección se restablece a la primera opción.
Agregue la propiedad AutoPostBack a verdadero. –
Actualización de mi respuesta. –