【问题标题】:DropDownList not firing OnSelectedIndexChangedDropDownList 未触发 OnSelectedIndexChanged
【发布时间】:2014-02-20 19:01:06
【问题描述】:

ASP.Net 代码:

<asp:DropDownList ID="ddlKid" runat="server" AutoPostBack="true" CssClass="ddlReports"
    Width="160px" OnSelectedIndexChanged="ddlKid_SelectedIndexChanged">
</asp:DropDownList>

C#代码:

protected void ddlKid_SelectedIndexChanged(object sender, EventArgs e)
{
    int i = ddlKid.SelectedIndex;
    count = i;
    int KidId = int.Parse(KidArray[i].ToString());

    ArrayList ADA = new ArrayList();
    ADA.Add(FirstAssignment.SelectedItem);
    ADA.Add(SecondAssignment.SelectedItem);
    DrawTableNew(ADA, KidId);
}

protected void Page_Load(object sender, EventArgs e)
{
    GameLib.Reports.ReportID = 6;
    if (!IsPostBack)
    {
        FillGrades();
        FillKids();
        count = 0;
        Label1.Visible = false;
        FirstAssignment.Visible = false;
        SecondAssignment.Visible = false;
        L1st.Visible = false;
        L2nd.Visible = false;
        Header.Visible = false;
        Label2.Visible = false;
        Div2.Visible = false;
        Panel1.Visible = false;
        DwdTable.Visible = false;
        DwdButton2.Visible = false;
        pnlIssues.Visible = false;
        Panel2.Visible = false;
    }
    else
    {
        FillGrades();
        //  FillKids();
    }
}

protected void FillKids()
{
    ddlKid.Visible = true;
    try
    {
        if (GameUser.UserType == 1)
        {
            ddlKid.Items.Insert(0, new System.Web.UI.WebControls.ListItem(GameUser.UserName, GameUser.UserID.ToString()));
        }
        else
        {
            DataTable dt = new DataTable();
            //dt = GameLib.GameUser.GetKidsForParent(GameUser.UserID);
            dt = GameLib.GameUser.GetKidsForParentAsPerGrade(GameUser.UserID, ddlAssessment.SelectedItem.ToString());
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                int kidId = (int)dt.Rows[i]["intUserID"];
                KidArray.Add(kidId);
            }
            if (dt.Rows.Count <= 0)
            {
                //MPEGrade.Show();
            }
            else
            {
                ddlKid.DataSource = dt;
                ddlKid.DataTextField = "vchLoginName";
                ddlKid.DataValueField = "vchGradeName";
                ddlKid.DataBind();
            }
        }
    }
    catch
    {

    }
}

问题是我的ddlKid_SelectedIndexChanged 没有执行。页面加载后,它在else 语句处停止。其填充孩子的代码(添加下拉数据)。 填充小子只调用了第一个,即 !postback。

【问题讨论】:

  • else 代码中有什么?你有例外吗?
  • 您的代码似乎没有问题,ddlKid_SelectedIndexChanged 将被执行,除非在 Page_Load 某处发生错误
  • 向我们展示代码的 else 或总页面加载块,更新时请尝试添加 的结束标记
  • 在页面加载时设置断点,看看会发生什么。正如您所看到的,当您创建一个只有下拉列表和 selectedindexchange 事件的全新项目时,它只会在 autopostback 为 true 时触发。
  • 您是说它进入了 else 语句,这意味着它不是回发。对于第一次加载,它不会执行 SelectedIndexChanged !!

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


【解决方案1】:

您可以更改绑定值: 填写孩子的价值,例如:

string vchLoginName=//login name from db;
string vchGradeName=//Grade name from db;
ddlKid.Items.Add(new ListItem(vchLoginName,vchGradeName)); 

【讨论】:

    猜你喜欢
    • 2013-09-13
    • 2016-05-24
    • 1970-01-01
    • 2011-08-17
    • 2016-09-05
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多