我有一种情况,当我以编程方式选择项目时,我需要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
并向我显示下拉列表中第一项的标签,这当然对我没有任何帮助。
任何建议。
答案 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;
}