2015-07-09 77 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