2016-11-25 62 views
0

我已经将下拉值保存在数据库和视图状态中,但是在页面加载时,它并没有被加载。 能有人告诉我我要去哪里错了下拉值在ViewState中没有保存

protected void Page_Load(object sender, System.EventArgs e) 
{ 
if (ViewState["ddSelectedValue"] != "0") 
     { 
      dd_RuleFor.SelectedValue = Convert.ToInt32(ViewState["ddSelectedValue"]).ToString(); 
     } 
} 

protected void btn_Save_Click(object sender, System.EventArgs e) 
{ 
    if(chkRuleApprover.Checked == true && dd_RuleFor.SelectedValue != "0") 
     { 

      strSQL = "update UserFile set Rule_Approval_Selection=" + dd_RuleFor.SelectedItem.Value + " where UID=" + intUserID; 
      objCmd = new System.Data.SqlClient.SqlCommand(strSQL, oconn); 
      objCmd.ExecuteNonQuery(); 

      ViewState["ddSelectedValue"] = dd_RuleFor.SelectedValue.ToString(); 
     } 
} 
+0

你可以分享你的硬编码结合价值代码? –

+0

Wy是你用你自己的'ViewState'来保存'SelectedValue'吗?通常asp.net ViewState会为你做这个。 – VDWWD

回答

0

请确保您填写的价值观下拉首先在页面加载和不是使用以下条件后:

if(!Page.Ispostback()) 
{ 
if (ViewState["ddSelectedValue"] != "0") 
    { 
     dd_RuleFor.SelectedValue = Convert.ToInt32(ViewState["ddSelectedValue"]).ToString(); 
    } 
} 
+0

是的,我已经通过在aspx – sumedha

+0

中硬编码来填充dd值,那么你必须使用上面的page.Ispostback()条件,你可以请张贴设计页面+代码页。另外,你有使用更新面板? –

+0

此外,您不必将视图状态值转换为int32,然后再转换回字符串。避免拳击 - 不行 –