2011-01-12 9 views
6

का उपयोग कर डेटा फ़िल्टर करना हाय मेरे पास EntityDataSource है।EntityDataSource और WHERE

मुझे प्रोग्रामेटिक रूप से एक चर (SESlectedValue) को EntityDataSource के लिए WHERE फ़िल्टर में उपयोग करने की आवश्यकता है।

क्या आप मुझे यह दिखाने के लिए एक सरल कोर पोस्ट कर सकते हैं कि यह कैसे करें? आपके समय के लिए धन्यवाद!

EntityDataSource पर WhereParameters बनाने के लिए मैं इस कोड का उपयोग: नियंत्रण के लिए

  Parameter parameter = new Parameter("SelectedValue", TypeCode.Int32, uxTreeView1.SelectedValue); 
      parameter.DefaultValue = "0"; 
      uxEntityDataSourceNodes.WhereParameters.Add(parameter);` 

यहाँ कोड:

 <asp:EntityDataSource ID="uxEntityDataSourceNodes" runat="server" 
     ConnectionString="name=TestHierarchyEntities" 
     DefaultContainerName="TestHierarchyEntities" EnableFlattening="False" 
     EnableUpdate="True" EntitySetName="CmsCategories" Where="it.CategoryId = @SelectedValue" 
     EntityTypeFilter="" Select=""> 
    </asp:EntityDataSource> 

उत्तर

6

इस पढ़ें?

The Entity Framework and ASP.NET - Filtering, Ordering, and Grouping Data


अद्यतन: नॉर्थविंड उत्पाद और श्रेणियाँ टेबल के साथ एक उदाहरण।
DropDownList श्रेणियों की सूची देता है और ग्रिड व्यू श्रेणी द्वारा फ़िल्टर किए गए उत्पादों को प्रदर्शित करता है।

ASPX

<asp:DropDownList ID="uxTreeView1" runat="server" 
      AutoPostBack="true" 
      AppendDataBoundItems="true" 
      DataSourceID="EntityDataSource1" 
      DataTextField="CategoryName" 
      DataValueField="CategoryID" 
      OnSelectedIndexChanged="uxTreeView1_SelectedIndexChanged"> 
    <asp:ListItem Text="Select Category" Value="0"></asp:ListItem> 
</asp:DropDownList> 
<asp:EntityDataSource ID="EntityDataSource1" runat="server" 
    ConnectionString="name=NorthwindEntities" 
    DefaultContainerName="NorthwindEntities" EnableFlattening="False" 
    EntitySetName="Categories" Select="it.[CategoryID], it.[CategoryName]"> 
</asp:EntityDataSource> 
<asp:GridView ID="GridView1" runat="server" 
      AutoGenerateColumns="False" 
      DataSourceID="EntityDataSource2" 
      DataKeyNames="ProductID"> 
    <Columns> 
     <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
      ReadOnly="True" SortExpression="ProductName" /> 
     <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" 
      ReadOnly="True" SortExpression="CategoryID" /> 
    </Columns> 
</asp:GridView> 
<asp:EntityDataSource ID="EntityDataSource2" runat="server" 
    ConnectionString="name=NorthwindEntities" 
    DefaultContainerName="NorthwindEntities" EnableFlattening="False" 
    EntitySetName="Products" 
    Select="it.[ProductID], it.[ProductName], it.[CategoryID]"> 
</asp:EntityDataSource> 

ASPX.CS

protected void uxTreeView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    EntityDataSource2.WhereParameters.Clear(); 
    EntityDataSource2.AutoGenerateWhereClause = true; 
    //alternatively 
    //EntityDataSource2.Where = "it.[CategoryID] = @CategoryID"; 
    EntityDataSource2.WhereParameters.Add("CategoryID", TypeCode.Int32, uxTreeView1.SelectedValue); 
} 

यह आपके लिए क्या देख रहे है?

+0

धन्यवाद मैंने इसे पढ़ा entitydatasource कहता है, मैं अभी भी पता करने की जरूरत है कि कैसे जनसंपर्क करने के लिए ogrammatic EntityDataSet, किसी भी विचार के लिए एक मूल्य भेजें? धन्यवाद – GibboK

+0

ग्रेट लिंक और स्पष्टीकरण! निश्चित रूप से +1! – H27studio

+0

वह लिंक अब टूटा हुआ है, लेकिन यह हो सकता है: [लिंक] (http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet -getting-start-part-3) – PeterX

4

मैं हमेशा की तरह से कोड-पीछे एक पैरामीटर सेट करने के लिए DefaultValue बदल गए हैं,:

uxEntityDataSourceNodes.WhereParameters["SelectedValue"].DefaultValue 
    = uxTreeView1.SelectedValue.ToString(); 

यह मेरे लिए काम किया।

संपादित करें: फिर आप aspx फ़ाइल में WhereParameter निर्दिष्ट कर सकते हैं और में कोड-पीछे WhereParameters संग्रह में जोड़ने के लिए की जरूरत नहीं है:

<asp:EntityDataSource ID="uxEntityDataSourceNodes" runat="server" 
    ConnectionString="name=TestHierarchyEntities" 
    DefaultContainerName="TestHierarchyEntities" EnableFlattening="False" 
    EnableUpdate="True" EntitySetName="CmsCategories" 
    Where="it.CategoryId = @SelectedValue" 
    EntityTypeFilter="" Select=""> 
    <WhereParameters> 
     <asp:Parameter Name="SelectedValue" Type="Int32" /> 
    </WhereParameters> 
</asp:EntityDataSource> 
0

मैं अपने पन्नों पर इस का उपयोग एक को भरने के लिए ग्रिड

<ef:EntityDataSource runat="server" ID="edsOperacionData" 
    ConnectionString="name=VistasInntecMPContext" 
    DefaultContainerName="VistasInntecMPContext" 
    EnableFlattening="False" 
    EntitySetName="OperacionDatas" 
    OrderBy="it.[ClaveEmpleado]" 
    Select="it.[TarjetaID], it.[ClienteID], it.[ClienteID2], it.[ClaveEmpleado], it.[ProductoGrupoID], it.[ProductoNombre], it.[NoTarjeta], it.[TipoTarjeta], it.[StatusCuentaID], it.[StatusTarjetaID], it.[StatusTarjeta], it.[TarjetaHabienteID]" 
    Where="(it.[ProductoGrupoID] = @ProductoGrupoID OR @ProductoGrupoID is null) AND (it.[ClienteID2] = @ClienteId2 OR @ClienteId2 is null) AND (it.[NoTarjeta] = @NoTarjeta OR @NoTarjeta is null) AND (@Clave is null OR it.[ClaveEmpleado] = @Clave) AND (@Estatus is null OR it.[StatusTarjetaID] = @Estatus)">        
    <WhereParameters> 
     <asp:ControlParameter ControlID="drpProductosB" DbType="Byte" 
      Name="ProductoGrupoID" PropertyName="SelectedValue" /> 
     <asp:ControlParameter ControlID="txtClienteIdB" DbType="String" 
      Name="ClienteId2" PropertyName="Text" /> 
     <asp:ControlParameter ControlID="txtClaveEmpleadoB" DbType="String" 
      Name="Clave" PropertyName="Text" /> 
     <asp:ControlParameter ControlID="txtNoTarjetaB" DbType="String" 
      Name="NoTarjeta" PropertyName="Text" DefaultValue="" /> 
     <asp:ControlParameter ControlID="drpEstatusB" DbType="Byte" 
      Name="Estatus" PropertyName="SelectedValue" /> 
    </WhereParameters> 
</ef:EntityDataSource> 

ग्रिड द्वारा इस

DataSourceID="edsOperacionData" 
संबंधित मुद्दे