5

के लिए कस्टम फ़िल्टर जोड़ना EF4 का उपयोग कर VS2010 में एक डायनामिक डेटा वेबसाइट पर कुछ अलग-अलग फ़िल्टर (विदेशीकी फ़िल्टर के अतिरिक्त) जोड़ने की कोशिश कर रहा है। मैं नए फ़िल्टर टेम्पलेट्स जोड़ सकता हूं, लेकिन मैं कैसे निर्दिष्ट करूं कि मेरे मॉडल में प्रत्येक प्रॉपर्टी के लिए कौन सा टेम्पलेट प्रदर्शित होगा?डायनामिक डेटा वेबसाइट (VS2010, EF4)

धन्यवाद

उत्तर

9

यहां ऐसा करने के लिए कदम हैं:

1) आप चाहते हैं फिल्टर DynamicData \ फिल्टर के तहत के लिए एक नया UserControl बनाएँ।

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TextFilter.ascx.cs" Inherits="Test.Prototype.Web.DynamicData.DynamicData.Filters.TextFilter" %> 
<asp:TextBox runat="server" ID="TextBox1" AutoPostBack="true" OnTextChanged="TextBox1_OnTextChanged" CssClass="DDFilter"> 
</asp:TextBox> 

और पीछे कोड:: मैं एक TextFilter.ascx बनाया

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Collections.Specialized; 

using System.ComponentModel.DataAnnotations; 
using System.Linq; 

using System.Linq.Expressions; 
using System.Web.DynamicData; 
using System.Web.UI; 
using System.Web.UI.WebControls; 


namespace Test.Prototype.Web.DynamicData.DynamicData.Filters 
{ 
    public partial class TextFilter : System.Web.DynamicData.QueryableFilterUserControl 
    { 

     private const string NullValueString = "[null]"; 

     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     public override Control FilterControl 
     { 
      get 
      { 
       return TextBox1; 
      } 
     } 


     protected void TextBox1_OnTextChanged(object sender, EventArgs e) 
     { 
      OnFilterChanged(); 
     } 

     public override IQueryable GetQueryable(IQueryable source) 
     { 
      string selectedValue = TextBox1.Text; 
      if (String.IsNullOrEmpty(selectedValue)) 
      { 
       return source; 
      } 

      object value = selectedValue; 
      if (selectedValue == NullValueString) 
      { 
       value = null; 
      } 
      if (DefaultValues != null) 
      { 
       DefaultValues[Column.Name] = value; 
      } 

      return ApplyEqualityFilter(source, Column.Name, value); 

     } 

    } 
} 
फिर अपने मॉडल में

, बस FilterUIHint विशेषता अगले फिल्टर की ओर इशारा करते के साथ अपने गुण व्याख्या और आप के लिए अच्छा कर रहे हैं जाओ:

सिस्टम का उपयोग कर; System.Collections का उपयोग कर ; System.Collections.Generic का उपयोग कर ; System.Collections.ObjectModel का उपयोग कर ; System.Collections का उपयोग कर । विशेषीकृत;

System.ComponentModel.DataAnnotations का उपयोग कर;

नाम स्थान Test.Model { सार्वजनिक आंशिक वर्ग एसेट { #region आदिम गुण

public virtual int Id 
    { 
     get; 
     set; 
    } 

    [FilterUIHint("TextFilter")] 
    public virtual string Name 
    { 
     get; 
     set; 
    } 

...

+0

बहुत सराहना की! –

संबंधित मुद्दे