2011-02-05 59 views
0

我正在使用數據綁定下拉列表來填充項目迭代的組合框和顯示標籤雲的ascx控件。我正在檢索下拉列表的selectedValue並將其存儲爲會話以過濾出標籤雲(針對整個項目或迭代)。我收到一個錯誤,因爲我輸入的默認值不能被轉換爲整數。在此先感謝您的幫助!SelectedIndexChanged過濾ascx控件

filteroptions.Items.Insert(0, "Entire Project"); 

ASP.NET文件:

protected void filteroptions_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string selected_iteration = filteroptions.SelectedValue; 

    Session["iteration"] = selected_iteration; 

} 

ASCX控制:

protected void Page_Load(object sender, EventArgs e) 
{ 
    proj_name = Request.QueryString["project"].ToString(); 
    proj_id = Request.QueryString["id"].ToString(); 

    iteration = (string)Session["iteration"]; 

    BindTagCloud(); 

} 

private void BindTagCloud() 
{ 

    int pro_id = Convert.ToInt32(proj_id); 
    int iteration_id = Convert.ToInt32(iteration); 

.... 

if (iteration_id != 0) 
    { 
     ListView1.DataSource = tagCloudNegativeIteration; 
     ListView1.DataBind(); 

     ListView2.DataSource = tagCloudPositiveIteration; 
     ListView2.DataBind(); 

    } 
    else 
    { 
     ListView1.DataSource = tagCloudNegative; 
     ListView1.DataBind(); 

     ListView2.DataSource = tagCloudPositive; 
     ListView2.DataBind(); 

    } 
} 
+0

你得到的錯誤究竟是什麼?它是一個`NullReferenceException`嗎? – Victor 2011-02-05 04:19:31

回答

0

的問題是,您要設置迭代值設置爲null初始負載。您可以使用此代碼來一直回落到一個默認的session變量爲空,你可能想讓你的迭代變量爲一個整數,所以你可以轉換它在你的負載。

if(String.IsNullOrEmpty(Sesssion["iteration"]) 
    iteration = "0"; 
else 
    iteration = Session["iteration"] 

並改變你的添加項目,以什麼aquinas建議的方式。

0

使用這個..

if(Session["iteration"] == Defaultvalue) 
    itereation = "0"; 
else 
    iteration = (string)Session["iteration"]; 

和默認值是存儲在值會話[「迭代」]如果沒有值存儲在該t中母雞使用null作爲默認值。

1

那麼,你沒有存儲一個整數值。此代碼:

filteroptions.Items.Insert(0, "Entire Project");

很可能無法做你覺得它在做什麼。這是說「添加新的ListItem爲0的鍵和文字‘整個工程’,相反,它是說在位置 0與價值的文本插入一個新的列表項‘整個項目的’

如果因任何原因

你可能想是這樣,

filteroptions.Items.Insert(0, new ListItem("Entire Project", "0"));