C# 已选择的索引已更改

C# 已选择的索引已更改,c#,javascript,asp.net,C#,Javascript,Asp.net,问题: SelectedIndexchanged不会激发。我尝试使用断点进行调查,但它甚至没有到达事件。 我通过双击组合框完成了这个活动。但这没有帮助。 请给我一些建议 代码如下: protected void nav_dd_parent_edit_SelectedIndexChanged(object sender, EventArgs e) { } <td width="55%" class="style1" he

问题:

SelectedIndexchanged不会激发。我尝试使用断点进行调查,但它甚至没有到达事件。 我通过双击组合框完成了这个活动。但这没有帮助。 请给我一些建议

代码如下:

    protected void nav_dd_parent_edit_SelectedIndexChanged(object sender, EventArgs e)
            {

            }   
    <td width="55%" class="style1" height="20px">
                                    <asp:DropDownList ID="nav_dd_parent_edit" runat="server" 
                                        DataSourceID="sp_GetNavParents_Edit" DataTextField="Name" 
                                        DataValueField="NavItemId" Height="24px" ReadOnly="FALSE" Width="375px" 
                                        onselectedindexchanged="nav_dd_parent_edit_SelectedIndexChanged">
                                    </asp:DropDownList>
                                </td>

protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                //Page.MaintainScrollPositionOnPostBack = true;
                //SiteMaster.g_solution = "Couche-Tard - QV";
                //SiteMaster.g_solution_id = 27;
                nav_dd_parent.DataBind();
                if (SiteMaster.g_solution != null && SiteMaster.g_solution != "")
                {
                    nav_literal.Text = "Solution: " + SiteMaster.g_solution;
                    nav_hidden_SoltnId.Value = SiteMaster.g_solution_id.ToString();
                }
                else
                {
                    nav_literal.Text = "Please select a solution first from the 'Solution Template' Tab.";
                    panel_top.Visible = false;
                }
            }
受保护的无效导航\u dd\u父项\u编辑\u选择的索引已更改(对象发送方,事件参数e)
{
}   
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Page.IsPostBack)
{
//Page.MaintainScrollPositionOnPostBack=真;
//SiteMaster.g_solution=“Couche Tard-QV”;
//SiteMaster.g_解决方案_id=27;
nav_dd_parent.DataBind();
if(SiteMaster.g_解决方案!=null&&SiteMaster.g_解决方案!=“”)
{
nav_literal.Text=“解决方案:”+SiteMaster.g_解决方案;
nav_hidden_SoltnId.Value=SiteMaster.g_solution_id.ToString();
}
其他的
{
nav_literal.Text=“请先从“解决方案模板”选项卡中选择一个解决方案。”;
面板顶部可见=假;
}
}

您没有看到断点被击中,因为选择更改时dropdownlist没有发回


AutoPostBack
设置为
true
,您应该都设置好了。

我注意到您的DropDownList Id是“nav_dd_parent_edit”,但是您的页面加载正在调用“nav_dd_parent”上的数据绑定方法-这可能是问题的一部分吗

不管怎样,我做了一个简化版的DropDownList,效果很好——也许会有帮助

<table>
    <tr>
        <td width="55%" class="style1" height="20px">
            <asp:DropDownList  
                ID="nav_dd_parent" 
                runat="server" 
                DataTextField="Name" 
                DataValueField="NavItemId" 
                Height="24px" 
                ReadOnly="FALSE" 
                Width="375px" 
                onselectedindexchanged="nav_dd_parent_edit_SelectedIndexChanged" 
                AutoPostBack="true">
             </asp:DropDownList>
         </td>
    </tr>
</table>


protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {                
        nav_dd_parent.Items.Add(new ListItem("Item 1", "1"));
        nav_dd_parent.Items.Add(new ListItem("Item 2", "2"));
        nav_dd_parent.Items.Add(new ListItem("Item 3", "3"));
    }
}

protected void nav_dd_parent_edit_SelectedIndexChanged(object sender, EventArgs e)
{
    int codeGetsHere = 0;
}   

受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!Page.IsPostBack)
{                
资产负债表项目。添加(新列表项目(“项目1”、“1”);
资产负债表项目。添加(新列表项目(“项目2”、“2”));
资产负债表项目。添加(新列表项目(“项目3”、“3”);
}
}
受保护的无效导航\u添加\u父项\u编辑\u选择的索引已更改(对象发送方,事件参数e)
{
int-codeGetsHere=0;
}   

需要记住的几个注意事项如下:

a、 将“AutoPostBack”设置为true:

    <asp:DropDownList ID="nav_dd_parent_edit" runat="server"  AutoPostBack="true"
        DataSourceID="sp_GetNavParents_Edit" DataTextField="Name" 
        DataValueField="NavItemId"
        onselectedindexchanged="nav_dd_parent_edit_SelectedIndexChanged">
    </asp:DropDownList>

我也试过了……但当我将所选值更改为其他值时,它会自动选择默认值。一步一个脚印。如果你想在更改所选索引时回发DDL,你必须设置
AutoPostBack
。如果这样做后你有其他问题,那是另一个问题。设置后g AutopostBack为true,每当我尝试更改所选值时,它都会自动选择默认值。Ahhh-我打赌在页面加载方法中每次回发后,您都会将数据绑定到DD。请确保在第一次加载时仅绑定一次。
if(!page.IsPostback){bindYourDropDownList();}
@user1047883好的,我们收集相关代码,包括带有AutoPostBack的DDL,然后发布一个新问题,描述您的新问题发布页面加载代码
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        nav_dd_parent_edit.DataSource = yourDataSourceName;
        nav_dd_parent_edit.DataBind();
    }
}