Mam listę rozwijaną w asp.net Kiedy klikam na opcję, powinienem otrzymać wybraną wartość, a następnie przekazać ją do bazy danych, a później użyć wyników kwerendy do wypełnienia druga lista rozwijana.Wybierz opcję Zmień listę rozwijaną C# ASP.NET Fire Event
Wydaje mi się, że nie mogę "wystrzelić" tego wydarzenia, gdy kliknę w pierwsze menu rozwijane. Poniżej jest to, co mam:
Kod 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>
kod kodzie C#
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);
}
}
mogę wypełnić pierwszy dropdownlist bez problemu. Drugi wydaje się nie działać. Bardzo nowy w ASP.NET. Pochodzę z tła PHP, gdzie byłoby to łatwo osiągnąć przy użyciu ajax jquery, ale chcę się uczyć C#.
Każda pomoc doceniona.
EDIT
Wszystkie odpowiedzi sugerują, że robię walut rozwijaną listę do AutoPostBack = true
mam zrobić, że:
<asp:DropDownList ID="Currencies" runat="server" AutoPostBack="True"
onselectedindexchanged="Currencies_SelectedIndexChanged">
</asp:DropDownList>
Ale to wciąż wydaje się nie działać. Na marginesie strona ładuje się ponownie, a moja opcja menu wyboru zostaje zresetowana do pierwszej opcji.
Dodaj właściwość AutoPostBack do wartości true. –
Zaktualizowałem moją odpowiedź. –