我在窗体上有一个下拉列表,它应该过滤掉或显示整个项目或特定迭代的标签云。目前,我没有遇到任何错误,但ASCX控制似乎没有更新。这里是我的代码,任何帮助将不胜感激!DropDown过滤掉ASCX控件
ASPX文件:
<asp:DropDownList ID="filteroptions" runat="server" onselectedindexchanged="filteroptions_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>
<asp:UpdatePanel ID="UpdateIteration" runat="server">
<ContentTemplate>
<TagCloud:TagCloudControl ID="TagCloudControl1" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="filteroptions" />
</Triggers>
</asp:UpdatePanel>
C#文件:
protected void Page_Load(object sender, EventArgs e)
{
...
filteroptions.DataSource = ds;
filteroptions.DataTextField = "Iteration";
filteroptions.DataValueField = "ProjectIterationID";
filteroptions.DataBind();
filteroptions.Items.Insert(0, new System.Web.UI.WebControls.ListItem("Entire Project", "0"));
}
protected void filteroptions_SelectedIndexChanged(object sender, EventArgs e)
{
string selected_iteration = filteroptions.SelectedValue;
Session["iteration"] = selected_iteration;
}
ASCX CS FILE:
string proj_id, proj_name, iteration;
protected void Page_Load(object sender, EventArgs e)
{
proj_name = Request.QueryString["project"].ToString();
proj_id = Request.QueryString["id"].ToString();
if (String.IsNullOrEmpty((string)Session["iteration"]))
iteration = "0";
else
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();
}
我个人不会使用updatepanel,因为updatepanel使真的很容易。相反,我会发起一个请求,并在响应中填写您想要tagcloud的区域。 – 2011-02-05 14:48:12