Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OnSelectedIndexChange即使使用autopostback也不触发=true_C#_Jquery_Asp.net_Postback - Fatal编程技术网

C# OnSelectedIndexChange即使使用autopostback也不触发=true

C# OnSelectedIndexChange即使使用autopostback也不触发=true,c#,jquery,asp.net,postback,C#,Jquery,Asp.net,Postback,好吧,我有点被难住了。我在页面上有一个asp:Dropdownlist。它通过以下web服务调用填充: Ajax.GetSubDevelopments(developmentId, function (results) { var subDevelopments = $j("#<%=ddlMinorAssociation.ClientID %>"); subDevelopments.empty(); $j('<option />', { value

好吧,我有点被难住了。我在页面上有一个asp:Dropdownlist。它通过以下web服务调用填充:

Ajax.GetSubDevelopments(developmentId, function (results) {
    var subDevelopments = $j("#<%=ddlMinorAssociation.ClientID %>");
    subDevelopments.empty();
    $j('<option />', { value: "-1", text: "Select a sub association" }).appendTo(subDevelopments);
        $j.each(results, function (index, value) {
            $j('<option />', { value: value.SubDevelopmentID, text: value.Name }).appendTo(subDevelopments);
        });
        subDevelopments.show();
    });

有人能提供一些关于发生了什么的见解吗?

服务器端,您的下拉列表中没有任何项目。它无法触发OnSelectedIndexChanged事件,因为它的索引没有更改-它没有任何项可以为其提供有意义的当前索引值。

服务器端,下拉列表中没有任何项。它无法触发OnSelectedIndexChanged事件,因为它的索引没有更改-它没有任何项可以为其提供有意义的当前索引值。

我认为问题与加载页面时,下拉列表中没有元素,并且ViewState没有所选项的任何信息有关;因此,当它发回时,它确定没有要触发的任何Indexchange事件

它发回的事实只是因为Autoposback属性设置为true,这基本上触发了一个普通表单submit


如果希望这样做,请将AutoPostback属性更改为false,并将代码钩住onchange事件,然后向需要在服务器端执行的任何方法发出另一个Ajax请求,并在客户端绑定数据

我认为问题与加载页面时,下拉列表中没有任何元素,ViewState没有任何选定项目的信息有关;因此,当它发回时,它确定没有要触发的任何Indexchange事件

它发回的事实只是因为Autoposback属性设置为true,这基本上触发了一个普通表单submit


如果希望这样做,请将AutoPostback属性更改为false,并将代码钩住onchange事件,然后向需要在服务器端执行的任何方法发出另一个Ajax请求,并在客户端绑定数据

你是怎么确认它没有开火的?两种方式。1我的回答。写永远不会写在页面上。我在那个响应上运行了一个带有断点的调试会话。它从不命中。填充代码隐藏中的下拉列表,并选择一个值作为测试。我怀疑是ajax加载导致了这个问题。实际上,我正在从一个版本重构代码,该版本绑定在客户端请求的需要ajax的代码隐藏功能中。当它绑定在代码后面时,它会正确地触发。这就是我的观点。我现在无法确认,但如果我记得通过javascript正确修改下拉选择会导致服务器端事件中断。您是如何确认它没有触发的?有两种方式。1我的回答。写永远不会写在页面上。我在那个响应上运行了一个带有断点的调试会话。它从不命中。填充代码隐藏中的下拉列表,并选择一个值作为测试。我怀疑是ajax加载导致了这个问题。实际上,我正在从一个版本重构代码,该版本绑定在客户端请求的需要ajax的代码隐藏功能中。当它绑定在代码后面时,它会正确地触发。这就是我的观点。我现在无法确认,但是如果我记得通过javascript正确修改下拉选择会导致服务器端事件中断。是的,我认为你说得一针见血。不幸的是,我需要执行的代码是另一个数据绑定…一个更复杂的数据绑定。我打算用一个隐藏字段和uu doPostBack进行黑客攻击。@Icestorm0141我知道现在已经有点晚了。。但我也有类似的问题。我从下拉列表中找到了另一个数据绑定。任何显示您如何解决问题的相同代码都将大有帮助。我认为您一针见血。不幸的是,我需要执行的代码是另一个数据绑定…一个更复杂的数据绑定。我打算用一个隐藏字段和uu doPostBack进行黑客攻击。@Icestorm0141我知道现在已经有点晚了。。但我也有类似的问题。我从下拉列表中找到了另一个数据绑定。任何显示您如何解决问题的代码都将非常有用
<asp:DropDownList ID="ddlMinorAssociation" 
   OnSelectedIndexChanged="ddlMinorAssociation_SelectedIndexChanged" 
   AutoPostBack="true" runat="server" CssClass="hidden">
</asp:DropDownList>
protected void ddlMinorAssociation_SelectedIndexChanged(object sender, EventArgs e)
{
    Response.Write("hi");
}