我正在使用数据绑定下拉列表来填充带有项目迭代和ascx控件的组合框以显示标签云。我正在检索下拉列表的selectedValue并将其存储为会话以过滤掉标记云(对于整个项目或通过迭代)。我收到错误,因为我输入的默认值不能转换为整数。在此先感谢您的帮助!
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 CONTROL:
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 :(得分:1)
好吧,你没有存储整数值。这段代码:
filteroptions.Items.Insert(0, "Entire Project");
可能没有做你认为它正在做的事情。这是不说“添加一个新的listitem,其键为0,文本为”整个项目“。相反,它是说在 Position 0处添加一个新的listitem值和“整个项目”的文本
你可能想要类似的东西,
filteroptions.Items.Insert(0, new ListItem("Entire Project", "0"));
答案 1 :(得分:0)
使用此.. ..
if(Session["iteration"] == Defaultvalue)
itereation = "0";
else
iteration = (string)Session["iteration"];
默认值是存储在session [“iteration”]中的值,如果没有存储值,则使用null作为defaultvalue。
答案 2 :(得分:0)
问题是您在初始加载时将迭代值设置为null。如果由于任何原因,您的会话变量变为null,则可以使用此代码始终回退到默认值。您可能希望将迭代变量设为整数,以便在负载中对其进行转换。
if(String.IsNullOrEmpty(Sesssion["iteration"])
iteration = "0";
else
iteration = Session["iteration"]
并改变添加项目的方式,以及aquinas建议的内容。