我正在努力寻找解决方法。 我有一个gridview,它的第一列是在Itemtemplate中定义的DropDownList:
<asp:GridView ID="gvXYZ" runat="server" DataKeyNames="Serial, XYZValue">
<Columns>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:DropDownList ID="ddlStat" runat="server" OnSelectedIndexChanged="ddlStat_SelectedIndexChanged"><asp:ListItem> </asp:ListItem><asp:ListItem> </asp:ListItem><asp:ListItem>OK</asp:ListItem><asp:ListItem>NG</asp:ListItem></asp:DropDownList>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" />
</asp:TemplateField>
</Columns>
</asp:GridView>
向用户显示一个空的选择,可能为OK或NG。 用户在网格中的任何DDL中进行选择时,如何触发JavaScript或VB端运行功能? 为了完成询问的内容,用户必须选择“确定”或“异常”。 我试图将“保存”按钮与网格已完成这一事实联系起来。 我知道我可以在HTML下拉列表上运行JavaScript,所以我尝试创建一个函数来执行此操作,并且从一篇文章中,我发现我尝试通过javascript函数运行VB方法:
function ddlStat_SelectedIndexChanged() {
var someValueToPass = 'Hello server';
__doPostBack('CustomPostBack', someValueToPass);
}
该脚本永远不会运行,不会发生回发并且VB附带代码:
Protected Sub ddlStat_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim x As Integer
For x = 1 To 10 : x = x + 1 : Next
End Sub
也不会触发。 我想在VB端执行此操作,因为我认为我可以更轻松地访问网格的属性,例如行数,这样我就可以检查其中每一个的DDL。 谢谢你这样做,问我是否不清楚。
答案 0 :(得分:2)
设置下拉菜单的AutoPostback
属性应该引发对服务器端的回发调用。可以使用HTML事件onchange
<asp:DropDownList ID="MyDropDown" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="SelectedChange" onchange="YourChangeFun(this);">
</asp:DropDownList>
Javascript:
<script type="text/javascript">
function YourChangeFun(ddl)
{
alert(ddl.selectedIndex);
}
</script>