0
私はasp.netドロップダウンリストの項目を検索するためにテキストボックスにJavascriptを使用しました。それは動作しますが、問題は、項目が見つかったときにドロップダウンに表示され、クリックした後にSelectedIndexchangeが発生しないということです。どうして ?ドロップダウン・ファイア・インデックスが変更されたのはなぜですか?
多くのアイテムの中からアイテムを選択すると起動しますが、単一のアイテムが表示されたときには起動しません。
コード:
<script type="text/javascript">
var ddlText, ddlValue, ddl, lblMesg;
function CacheItems() {
ddlText = new Array();
ddlValue = new Array();
ddl = document.getElementById("<%=ddlEmployers.ClientID %>");
//lblMesg = document.getElementById("<%=lblMsg.ClientID%>");
for (var i = 0; i < ddl.options.length; i++) {
ddlText[ddlText.length] = ddl.options[i].text;
ddlValue[ddlValue.length] = ddl.options[i].value;
}
}
window.onload = CacheItems;
function FilterItems(value) {
ddl.options.length = 0;
for (var i = 0; i < ddlText.length; i++) {
if (ddlText[i].toLowerCase().indexOf(value) != -1) {
AddItem(ddlText[i], ddlValue[i]);
}
}
lblMesg.innerHTML = ddl.options.length + " items found.";
if (ddl.options.length == 0) {
AddItem("No items found.", "");
}
}
function AddItem(text, value) {
var opt = document.createElement("option");
opt.text = text;
opt.value = value;
ddl.options.add(opt);
}
</script>
コントロール:
<div class="col-md-6">
<div class="form-group">
<%--<label for="exampleInputEmail1">Employers</label>--%>
<asp:TextBox ID="txtSearch" CssClass="col-md-12" runat="server" placeholder="Search employer"
onkeyup="FilterItems(this.value)"></asp:TextBox><br />
<asp:DropDownList ID="ddlEmployers" AutoPostBack="true" OnSelectedIndexChanged="ddlEmployers_SelectedIndexChanged" runat="server" CssClass="form-control"></asp:DropDownList>
<br />
<asp:Label ID="lblMsg" runat="server" Text=""></asp:Label>
</div>
</div>
のSelectedIndexChangedコード:
protected void ddlEmployers_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
ClsEmployee ClsEmployee = new MemberShip.Repository.ClsEmployee();
if(ddlEmployers.SelectedValue.ToInt32() <= 0)
{
ddlBranches.SelectedValue = "0";
}
else
{
ddlBranches.SelectedValue = ClsEmployeer.GetBranchByEmployerID(ddlEmployers.SelectedValue.ToInt32()) > 0 ? ClsEmployeer.GetBranchByEmployerID(ddlEmployers.SelectedValue.ToInt32()).ToString() : "0";
}
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert(" + ex.Message + ");", true);
}
}