[英]DropDownList OnSelectedIndexChanged is not Firing
我的主要目的是根據ddlMedicalName選擇填充ddlCity DropDownList。 但是我的主要問題是,盡管我嘗試了該問題的幾乎所有解決方案,但都無法觸發ddlMedicalName_OnSelectedIndexChanged。
我知道,關於這個問題有很多疑問和答案,我已經嘗試了每個人的almos,但仍然行不通。 我已經閱讀到EnableStateView = True不僅應應用於DropDownList,而且還應應用於整個頁面,因此,我將以下代碼添加到Web.Config中:
<system.web>
<pages styleSheetTheme="MainTheme" enableViewState="true"/>
這是我的代碼背后:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
namespace MedicalBootStrap
{
public partial class WebForm1 : System.Web.UI.Page
{
Entity.medicaldbEntities context = new Entity.medicaldbEntities();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddlBind();
}
}
protected void ddlBind()
{
var orders = from order in context.Medicals
select new { order.MedicalID, order.medicalName, order.CityFK };
var lstsrc = orders.ToList();
ddlMedicalName.DataSource = lstsrc;
ddlMedicalName.DataTextField = "medicalname";
ddlMedicalName.DataValueField = "cityfk";
ddlMedicalName.DataBind();
}
protected void ddlMedicalName_OnSelectedIndexChanged(object sender, EventArgs e)
{
int slc = Convert.ToInt32(ddlMedicalName.SelectedItem.Value);
var orders = from order in context.Cities
where order.CityID == slc
select new { order.CityID, order.CityName};
var lstsrc = orders.ToList();
ddlMedicalName.DataSource = lstsrc;
ddlMedicalName.DataTextField = "medicalname";
ddlMedicalName.DataValueField = "cityfk";
ddlMedicalName.DataBind();
}
protected void ddlRegion_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void SearchButton_Click(object sender, EventArgs e)
{
}
}
}
這是aspx:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="MedizinischeLeistungen.aspx.cs" Inherits="MedicalBootStrap.WebForm1" EnableViewState="true" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server" EnableViewState="true">
<table id="SearchTable">
<tr>
<td>Medizinische Leistung</td>
<td>Region</td>
<td>Stadt</td>
</tr>
<tr id="SearchDropDown">
<td>
<asp:DropDownList ID="ddlMedicalName" runat="server" EnableViewState="true"
AutoPostBack="True" AppendDataBoundItems="true"
OnSelectedIndexChanged="ddlMedicalName_OnSelectedIndexChanged">
<asp:ListItem Value="" Selected="True"> - Product - </asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:DropDownList ID="ddlRegion" runat="server" AutoPostBack="true" EnableViewState="true"
onselectedindexchanged="ddlRegion_SelectedIndexChanged">
<asp:ListItem Value="" Selected="True"> - Product - </asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="true" EnableViewState="true"
onselectedindexchanged="ddlCity_SelectedIndexChanged">
<asp:ListItem Value="" Selected="True"> - Product - </asp:ListItem>
</asp:DropDownList>
</td>
<td>
<asp:Button ID="SearchButton" runat="server" Text="Suche" onclick="SearchButton_Click" />
</td>
</tr>
</table>
</asp:Content>
任何幫助,將不勝感激
我測試了您的代碼。 這是我到目前為止發現的-
正確觸發了ddlMedicalName_OnSelectedIndexChanged事件。
ddlMedicalName.SelectedValue是一個字符串值; 字符串不是 ddlCity.DataSource 的有效數據源
protected void ddlMedicalName_OnSelectedIndexChanged(object sender, EventArgs e)
{
// Problem is the following 3 line of codes.
ddlCity.DataSource = ddlMedicalName.SelectedValue;
ddlCity.DataTextField = ddlMedicalName.SelectedValue;
ddlCity.DataValueField = ddlMedicalName.SelectedValue;
ddlCity.DataBind();
}
這是我的測試方式-
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ddlBind();
}
}
public class Medical
{
public int MedicalID { get; set; }
public string MedicalName { get; set; }
public int CityFK { get; set; }
}
public class City
{
public int CityID { get; set; }
public string CityName { get; set; }
}
protected void ddlBind()
{
var medicals = new List<Medical>()
{
new Medical {MedicalID = 1, MedicalName = "One", CityFK = 11},
new Medical {MedicalID = 2, MedicalName = "Two", CityFK = 22},
new Medical {MedicalID = 3, MedicalName = "Three", CityFK = 33},
new Medical {MedicalID = 4, MedicalName = "Four", CityFK = 44},
};
ddlMedicalName.DataSource = medicals;
ddlMedicalName.DataTextField = "medicalname";
ddlMedicalName.DataValueField = "cityfk";
ddlMedicalName.DataBind();
}
protected void ddlMedicalName_OnSelectedIndexChanged(object sender, EventArgs e)
{
var cities = new List<City>()
{
new City {CityID = 11, CityName = "City One"},
new City {CityID = 22, CityName = "City Two"},
new City {CityID = 33, CityName = "City Three"},
new City {CityID = 44, CityName = "City Four"},
};
int slc = Convert.ToInt32(ddlMedicalName.SelectedItem.Value);
var orders = from order in cities
where order.CityID == slc
select new { order.CityID, order.CityName };
var lstsrc = orders.ToList();
ddlCity.DataSource = lstsrc;
ddlCity.DataTextField = "CityName";
ddlCity.DataValueField = "CityID";
ddlCity.DataBind();
}
protected void ddlRegion_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void SearchButton_Click(object sender, EventArgs e)
{
}
請按照我的建議更改並嘗試。您必須刪除以下行
ddlMedicalName.DataValueField = "cityfk";
要么
將cityfk更改為medicalname並嘗試。
ddlMedicalName.DataValueField = "medicalname";
更改:
protected void ddlMedicalName_OnSelectedIndexChanged(object sender, EventArgs e)
{
至:
protected void ddlMedicalName_SelectedIndexChanged(object sender, EventArgs e)
{
或相反:
<asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="true" EnableViewState="true" onselectedindexchanged="ddlCity_SelectedIndexChanged">
至:
<asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="true" EnableViewState="true" onselectedindexchanged="ddlCity_OnSelectedIndexChanged">
您當前指向的是名為“ ..._ SelectedIndexChanged”的句柄,並提供了“ ..._ OnSelectedIndexChanged”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.