设置所选值不会触发SelectedIndexChanged

时间:2015-07-22 03:35:39

标签: c# asp.net drop-down-menu selectedindexchanged

我有一种情况,当我以编程方式选择项目时,我需要SelectedIndexChanged才能触发。这就是我在做的事情。

我从FormLoad上的数据库加载了一个下拉列表,我根据查询字符串中传递的信息设置了下拉列表的值,如下所示:

if (Request.QueryString["nat"] != null)
{
    ddlTriggers.ClearSelection();
    ddlTriggers.Items.FindByValue(
            Request.QueryString["nat"].ToString()).Selected = true;
}

这确实可以正常工作,因为它从查询字符串中获取id并将其与下拉列表中的特定项匹配。问题是只需设置.selected=true即可触发selectedIndexChanged事件。我正在尝试在更改所选索引时设置一些标签。

有些建议显示手动调用selectedIndexChanged,如下所示:

ddlCommonTasks_SelectedIndexChanged(ddlTriggers, EventArgs.Empty);

然后重置selectedIndex并向我显示下拉列表中第一项的标签,这当然对我没有任何帮助。

任何建议。

2 个答案:

答案 0 :(得分:1)

如果我认为您已经为selectedIndexChanged事件注册了一个处理程序,那么您可以简单地调用您注册为事件处理程序的相同函数。

如果你已经注册了这样的处理程序:

function handler() {
    alert( "Handler for .change() called." );
}

$(".target").change(handler);

您可以在其他地方定义您的功能,然后传递:

if (Request.QueryString["nat"] != null)
{
    ddlTriggers.ClearSelection();
    ddlTriggers.Items.FindByValue(Request.QueryString["nat"].ToString()).Selected = true;
    handler();
}

现在,在现有代码中只需调用处理函数:

{{1}}

答案 1 :(得分:1)

问题是您正在回发时或在服务器上的页面加载时更改所选索引。活动不会开火。你可以做的是把东西放在Sub convertTopdf() Dim ws As Worksheet Dim lastRow As Long ChDir "C:\Users\Dell\Desktop" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\Dell\Desktop\task_excel\POD.pdf", OpenAfterPublish:=True Set ws = ActiveWorkbook.ActiveSheet With ws lastRow = .Range("A" & .Rows.Count).End(xlUp).Row End With MsgBox "The last row which has data in Col A of Sheet1 is " & lastRow End Sub 处理程序中并将它重构为单独的方法,只要你更新值就可以调用它:

SelectedIndexChanged

修改代码如下:

ddlCommonTasks_SelectedIndexChanged(object sender, EventArgs e)
{
    var ddl = sender as DropDownList;
    PerformIndexChangedAction(ddl);
}

private void PerformIndexChangedAction(DropDownList ddl)
{
    lblTest.Text=ddl.SelectedItem.Text;
}