简体   繁体   English

dropdownlist选择的值没有变化?

[英]dropdownlist selected value is not changing?

dropdownlist selected value is not changing. dropdownlist所选值未更改。 although the string _month also contain the value but dropdownlist is not getting it.all other are working fine but only ddlMonth.selected value is not changing.i have assigned _month value to it but its not changing why? 虽然字符串_month也包含值,但dropdownlist没有得到它。所有其他都工作正常,但只有ddlMonth.selected值没有改变。我已经为它分配了_month值,但为什么没有改变? only ddlMonth is not changing all other are working fine why ddlmonth is not changing? 只有ddlMonth没有改变,其他所有都工作正常,为什么ddlmonth没有改变?

if (_objMonth.Contains("Month"))
{
    string _Month = (string)_objMonth.GetData("Month");
    ddlMonth.SelectedValue = _Month; 
    ///here ddlMonth.selected value is not getting new value from _month
}

Other code is below 其他代码如下

protected void Page_Load(object sender, System.EventArgs e)
{
   if (Page.IsPostBack)
       return;
   try
   {
       OnLoad();
       GetYears();
       if (!string.IsNullOrEmpty(ddlYear.SelectedValue))
       hYearId.Value = ddlYear.SelectedValue;
       GetPeriods(Convert.ToInt32(hYearId.Value));
       GetDepartment();
       GetSection();

       #region Get Selected login user department and section
       ddldepartment.SelectedValue = CommonMethods.UserContext.EmployeeDeparmentID;
       ddlSection.SelectedValue = CommonMethods.UserContext.EmployeeSectionID;

       #endregion

       ddldepartment_SelectedIndexChanged(null, null);
       ddlemp_SelectedIndexChanged(null, null);
       string name = Request.QueryString["id"] as string;

       #region Create Cache object

       ICacheManager _objYear = CacheFactory.GetCacheManager();//Create cache object
       ICacheManager _objMonth = CacheFactory.GetCacheManager();//Create cache object
       ICacheManager _objDepartment = CacheFactory.GetCacheManager();//Create cache object
       ICacheManager _objSection = CacheFactory.GetCacheManager();//Create cache object
       #endregion

    if (Request.QueryString["ClickTag"]!=null)
    {
       #region set Cached items
       if (Request.QueryString["ClickTag"].ToString() == "1")
       {
          if (_objYear.Contains("Year"))
          {
             string _Year = (string)_objYear.GetData("Year");
             ddlYear.SelectedValue = _Year;
          }
          if (_objMonth.Contains("Month"))
          {
             string _Month = (string)_objMonth.GetData("Month");
             ddlMonth.SelectedValue= _Month;
          }
          if (_objDepartment.Contains("Department"))
          {
             string _Department = (string)_objDepartment.GetData("Department");
             ddldepartment.SelectedValue= _Department;
          }
          if (_objSection.Contains("Section"))
          {
             string _Section = (string)_objSection.GetData("Section");
             ddlSection.SelectedValue = _Section;
          }
       }
       #endregion
    }

protected void ddlMonth_SelectedIndexChanged(object sender, EventArgs e)
{
   try
   {
      if (!string.IsNullOrEmpty(ddlMonth.SelectedValue))
      {
         hClpid.Value = ddlMonth.SelectedValue.Split(',')[0];
         Session["Startdate"] = ddlMonth.SelectedValue.Split(',')[2];
         Session["EndDate"] = ddlMonth.SelectedValue.Split(',')[3];
         ddldepartment_SelectedIndexChanged(null, null);
         ddlemp_SelectedIndexChanged(null, null);
         if (ddlSection.SelectedIndex > 0)
            ddlSection_SelectedIndexChanged(null, null);
      }
   }

void GetPeriods(int _year)
{
     IBLCalenderPeriod _bl = (IBLCalenderPeriod)SetupBLFactory.GetCalenderPeriod();

     DataSet _ds = (DataSet)_bl.GetPeriodIdsByYear(_year).GetMaster();

     _ds.Tables[0].Columns.Add("ID");

     foreach (DataRow _dr in _ds.Tables[0].Rows)
     {
          _dr["ID"] = _dr["CLP_ID"] + "," + _dr["clp_activeperiod"] + "," + _dr["CLP_DATESTART"] + "," + _dr["CLP_DATEEND"] + "";

     }
     ddlMonth.DataSource = _ds.Tables[0];
     ddlMonth.DataTextField = "CLP_DESCRIPTION";
     ddlMonth.DataValueField = "ID";
     ddlMonth.DataBind();

     foreach (DataRow _dr in _ds.Tables[0].Rows)
     {
          if (_dr["clp_activeperiod"] != null)
          if (_dr["clp_activeperiod"].ToString() == "1")
          {
             ddlMonth.SelectedValue = _dr["ID"].ToString();
             hClpid.Value = ddlMonth.SelectedValue.Split(',')[0];
             Session["Startdate"] = ddlMonth.SelectedValue.Split(',')[2];
             Session["EndDate"] = ddlMonth.SelectedValue.Split(',')[3];
             break;
          }
          else
          {
             ddlMonth.SelectedIndex = 0;
             hClpid.Value = "0";
          }
     }
}

我认为您正在ddlMonth中设置一个值,但ddlMonth没有该绑定的值。在设置值之前,请尝试在ddlMonth中绑定值列表

Please next time format the code before posting. 请下一次在发布之前格式化代码。 For the problem I think the solution is to put the region where you set the SelectedValue inside an 对于这个问题,我认为解决方案是将您在其中设置SelectedValue的区域放到

if(!isPostback){...}

I suggest you to take a look to the documentation about page lifecycle, because the explanation is that the Page_Load in executed not only the first time you load a page, but also for every postback (if you don't use the if(!isPostback){...} 我建议您看一下有关页面生命周期的文档,因为其解释是Page_Load不仅在您第一次加载页面时执行,而且在每次回发时都执行(如果您不使用if(!isPostback ){...}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM