Telerik Sitefinity 11可以';t在前端小部件控件中回发时获取下拉选择值
我正在使用SiteFinity11。我已经为新闻模块创建了一个自定义小部件,其中包含所有可用类别的下拉列表,我需要为所选类别过滤新闻。控件回发失败,但已选择。索引始终为零 我选中了“启用此页面的视图状态”复选框,页面正在使用自定义布局模板 my.aspx文件中的代码如下所示:Telerik Sitefinity 11可以';t在前端小部件控件中回发时获取下拉选择值,telerik,sitefinity,sitefinity-5,sitefinity-10,sitefinity-8,Telerik,Sitefinity,Sitefinity 5,Sitefinity 10,Sitefinity 8,我正在使用SiteFinity11。我已经为新闻模块创建了一个自定义小部件,其中包含所有可用类别的下拉列表,我需要为所选类别过滤新闻。控件回发失败,但已选择。索引始终为零 我选中了“启用此页面的视图状态”复选框,页面正在使用自定义布局模板 my.aspx文件中的代码如下所示: <%@ Control Language="C#" %> <%@ Import Namespace="Telerik.Sitefinity.Modules.News" %>
<%@ Control Language="C#" %>
<%@ Import Namespace="Telerik.Sitefinity.Modules.News" %>
<%@ Import Namespace="Telerik.Sitefinity.Taxonomies.Model" %>
<%@ Import Namespace="Telerik.Sitefinity.Model" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.Comments" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %>
<script type="C#" runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
try
{
var ControlID = Request.Form["__EVENTTARGET"].ToString();
Control postbackControl = Page.FindControl(ControlID);
lblStatus.Text = "ControlID=" + ControlID + "<br>";
DropDownList dd = (DropDownList)postbackControl;
lblStatus.Text += "SelectedIndex=" + dd.SelectedIndex.ToString();
}
catch (Exception ex) {
lblStatus.Text += "<br>" + ex.Message;
}
}
var s = ddlCategories.SelectedIndex;
if (!IsPostBack)
{
/* List of all categories */
Telerik.Sitefinity.Taxonomies.TaxonomyManager manager1 = Telerik.Sitefinity.Taxonomies.TaxonomyManager.GetManager();
System.Collections.IList categoryList = manager1.GetTaxa<Telerik.Sitefinity.Taxonomies.Model.HierarchicalTaxon>()
.Where(t => t.Taxonomy.Title == "Categories")
.Select(t =>
new { Id = t.Id, Name = t.Title.ToString() })
.OrderByDescending(t => t.Name)
.ToList();
ddlCategories.DataSource = categoryList;
ddlCategories.DataTextField = "Name";
ddlCategories.DataValueField = "Id";
ddlCategories.DataBind();
ddlCategories.Items.Insert(0, new ListItem("", ""));
}
}
protected void DdlCategories_SelectedIndexChanged(object sender, EventArgs e)
{
Telerik.Sitefinity.Modules.News.NewsManager newsManager = Telerik.Sitefinity.Modules.News.NewsManager.GetManager();
if (this.ddlCategories.SelectedIndex > 0)
{
//this.FilterExpression += string.Format(" AND Category.Contains(({0}))", this.ddlCategories.SelectedValue.ToString());
Guid taxonFilter = new Guid(this.ddlCategories.SelectedValue.ToString());
NewsList.DataSource = newsManager.GetNewsItems().Where(newsItem => newsItem.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live
&& newsItem.GetValue<IList<Guid>>("Categories")
.Contains(taxonFilter)
).ToList();
}else {
NewsList.DataSource = newsManager.GetNewsItems().Where(newsItem => newsItem.Status == Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).ToList();}
//populate items list
//return base.GetItemsList(ref totalCount);
}
</script>
<section class="news-container">
<div class="container">
<asp:Label ID="lblStatus" runat="server"></asp:Label>
<!-- filter panel -->
<div class="filter-panel">
<div class="panel-box categories">
<span class="label">CATEGORIES</span>
<div class="select-wrp">
<asp:DropDownList ID="ddlCategories" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DdlCategories_SelectedIndexChanged">
<asp:ListItem></asp:ListItem>
</asp:DropDownList>
</div>
</div>
</div>
</div>
<sf:SitefinityLabel id="title" runat="server" WrapperTagName="div" HideIfNoText="true" HideIfNoTextMode="Server" />
<telerik:RadListView ID="NewsList" ItemPlaceholderID="ItemsContainer" runat="server" EnableEmbeddedSkins="false" EnableEmbeddedBaseStylesheet="false">
<LayoutTemplate>
<div class="container extra-container2">
<div class="row news-post">
<asp:PlaceHolder ID="ItemsContainer" runat="server" />
</div>
</div>
</LayoutTemplate>
<ItemTemplate>
<article class="col-12 col-sm-6 col-md-6 col-lg-4 post">
<div class="holder">
<h2><sf:FieldListView ID="Title" runat="server" Text="{0}" Properties="Title" TextMode="Encode" EditableFieldType="ShortText"/> </h2>
</div>
</article>
</ItemTemplate>
</telerik:RadListView>
<sf:Pager id="pager" runat="server"></sf:Pager>
<asp:PlaceHolder ID="socialOptionsContainer" runat="server" />
</section>
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(第IsPostBack页)
{
尝试
{
var ControlID=Request.Form[“\uu EVENTTARGET”].ToString();
控件postbackControl=Page.FindControl(ControlID);
lblStatus.Text=“ControlID=“+ControlID+”
”;
DropDownList dd=(DropDownList)postbackControl;
lblStatus.Text+=“SelectedIndex=“+dd.SelectedIndex.ToString();
}
捕获(例外情况除外){
lblStatus.Text+=“
”+ex.消息;
}
}
var s=ddlcombitions.SelectedIndex;
如果(!IsPostBack)
{
/*所有类别的清单*/
Telerik.Sitefinity.Taxonomies.TaxonomyManager manager1=Telerik.Sitefinity.Taxonomies.TaxonomyManager.GetManager();
System.Collections.IList categoryList=manager1.GetTaxa()
.Where(t=>t.Taxonomy.Title==“类别”)
.选择(t=>
新的{Id=t.Id,Name=t.Title.ToString()})
.OrderByDescending(t=>t.Name)
.ToList();
ddlcegories.DataSource=类别列表;
ddlcegories.DataTextField=“Name”;
ddlcegories.DataValueField=“Id”;
ddlcegories.DataBind();
ddlcegories.Items.Insert(0,新列表项(“,”);
}
}
受保护的无效DdlCategories\u SelectedIndexChanged(对象发送方,事件参数e)
{
Telerik.Sitefinity.Modules.News.NewsManager NewsManager=Telerik.Sitefinity.Modules.News.NewsManager.GetManager();
如果(this.ddlcombitions.SelectedIndex>0)
{
//this.FilterExpression+=string.Format(“AND Category.Contains({0})),this.ddlcontegories.SelectedValue.ToString();
Guid taxonFilter=新Guid(this.ddlcombicates.SelectedValue.ToString());
NewsList.DataSource=newsManager.GetNewsItems()。其中(newsItem=>newsItem.Status==Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live
&&newsItem.GetValue(“类别”)
.Contains(taxonFilter)
).ToList();
}否则{
NewsList.DataSource=newsManager.GetNewsItems().Where(newsItem=>newsItem.Status==Telerik.Sitefinity.GenericContent.Model.ContentLifecycleStatus.Live).ToList();}
//填充项目列表
//返回base.GetItemsList(参考totalCount);
}
类别
编辑:即使是下面的代码也会得到相同的结果。
protected void Page_Load(object sender, EventArgs e)
{
//if (!IsPostBack)
{
/* List of all categories */
Telerik.Sitefinity.Taxonomies.TaxonomyManager manager1 = Telerik.Sitefinity.Taxonomies.TaxonomyManager.GetManager();
System.Collections.IList categoryList = manager1.GetTaxa<Telerik.Sitefinity.Taxonomies.Model.HierarchicalTaxon>()
.Where(t => t.Taxonomy.Title == "Categories")
.Select(t =>
new { Id = t.Id, Name = t.Title.ToString() })
.OrderByDescending(t => t.Name)
.ToList();
ddlCategories.DataSource = categoryList;
ddlCategories.DataTextField = "Name";
ddlCategories.DataValueField = "Id";
ddlCategories.DataBind();
ddlCategories.Items.Insert(0, new ListItem("", ""));
}
if (Page.IsPostBack)
{
try
{
var ControlID = Request.Form["__EVENTTARGET"].ToString();
Control postbackControl = Page.FindControl(ControlID);
lblStatus.Text = "ControlID=" + ControlID + "<br>";
DropDownList dd = (DropDownList)postbackControl;
lblStatus.Text += "SelectedIndex=" + dd.SelectedIndex.ToString();
}
catch (Exception ex) {
lblStatus.Text += "<br>" + ex.Message;
}
}
var s = ddlCategories.SelectedIndex;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
//如果(!IsPostBack)
{
/*所有类别的清单*/
Telerik.Sitefinity.Taxonomies.TaxonomyManager manager1=Telerik.Sitefinity.Taxonomies.TaxonomyManager.GetManager();
System.Collections.IList categoryList=manager1.GetTaxa()
.Where(t=>t.Taxonomy.Title==“类别”)
.选择(t=>
新的{Id=t.Id,Name=t.Title.ToString()})
.OrderByDescending(t=>t.Name)
.ToList();
ddlcegories.DataSource=类别列表;
ddlcegories.DataTextField=“Name”;
ddlcegories.DataValueField=“Id”;
ddlcegories.DataBind();
ddlcegories.Items.Insert(0,新列表项(“,”);
}
如果(第IsPostBack页)
{
尝试
{
var ControlID=Request.Form[“\uu EVENTTARGET”].ToString();
控件postbackControl=Page.FindControl(ControlID);
lblStatus.Text=“ControlID=“+ControlID+”
”;
DropDownList dd=(DropDownList)postbackControl;
lblStatus.Text+=“SelectedIndex=“+dd.SelectedIndex.ToString();
}
捕获(例外情况除外){
lblStatus.Text+=“
”+ex.消息;
}
}
var s=ddlcombitions.SelectedIndex;
}
请告诉我缺少什么
谢谢请确保页面已选中启用视图状态-这在页面的标题和属性中我添加了一个隐藏字段,并且在回发后能够获取其值。另一个解决方案是发送查询字符串中的值
感谢所有回复。可能是因为类别太多了