2015-07-09 40 views
0

我有ASP.Net控件的搜索属性与复选框选项和ASP.NET中继器。对于响应式设计,我在两个不同的地方有相同的绑定来匹配设计。ASP.Net中继器响应控件绑定

在这里,CheckBoxList ID = Options1 & ID = Options2都具有相同的绑定,但代码将重复。我有400行检查单个绑定的条件。我必须再次复制所有代码才能看到另一个视图。 有没有什么办法可以优化代码,以便与两个视图处理进行单一绑定。 (避免重复绑定和检查)?

// Desktop View 

<div class="hidden-sm hidden-xs narrowSearch"> 
//Content 
<asp:Repeater ID="rptAttributes1" runat="server" EnableViewState="true" OnItemDataBound="rptAttributes_ItemDataBound"> 
<ItemTemplate> 
<li> 
<div class="form"> 
<asp:CheckBoxList ID="Options1" runat="server" AutoPostBack="false" Visible="false" 
DataTextField="EnOptionName" DataValueField="SubCategoryAttributeOptionID" Font-Strikeout="False" /> 
</div> 
</li> 
</ItemTemplate> 
</asp:Repeater> 
</div> 

// Mobile view 

<div class="sec_left hidden-lg hidden-md"> 
<div class="moremenu narrowSearch"> 
//Content 
<asp:Repeater ID="rptAttribute2" runat="server" EnableViewState="true" OnItemDataBound="rptAttributes_ItemDataBound"> 
<ItemTemplate> 
<li> 
<div class="form"> 
<asp:CheckBoxList ID="Options2" runat="server" AutoPostBack="false" Visible="false" 
DataTextField="EnOptionName" DataValueField="SubCategoryAttributeOptionID" Font-Strikeout="False" /> 
</div> 
</li> 
</ItemTemplate> 
</asp:Repeater> 
</div> 
</div> 

代码背后:

CheckBoxList chklOptions1 = item.FindControl("Options1") as CheckBoxList; 
CheckBoxList chklOptions2 = item.FindControl("Options2") as CheckBoxList; 

回答

0

您可以将中继器(包括声明代码,以及你在你的页面的代码隐藏的)放到一个自定义用户控件。然后,将用户控件放在页面的每个部分(桌面和移动设备)中。这是避免重复代码的最简单方法。话虽如此,由于您只提供了页面的代码隐藏类中的代码的一部分,因此当您将页面代码隐藏中的命令代码移动时,我无法说明可能需要做什么更改类到用户控件。

祝你好运!

+0

例如,我必须检查当前使用此代码的复选框属性值。 if(options.Checked == true) { _lstProducts = _lstProducts.Intersect(lstDeals).ToList(); } 但在这种情况下,我必须重复检查这两个视图 如果(options1.Checked == TRUE){ _lstProducts = _lstProducts.Intersect(lstDeals).ToList(); } if(options2.Checked == true) { _lstProducts = _lstProducts.Intersect(lstDeals).ToList(); } 因此,每一个检查转换为两个。避免这种检查到单身它很好 – Marudu

+0

你的例子证实我的建议(将您的代码移动到一个自定义的用户控件)应该在你的情况下工作得很好。 – Lawrence

+0

是的,你是正确的,你建议。但如果我使用用户控件,我在页面中的两个地方使用此控件。所以,我再次检查两个不同的ID是唯一的权利。那么如何减少我的后端检查呢?我只关注后端代码优化。 – Marudu