1

私は ASP.NET を初めて使用するので、EntityDataSource の where 句を作成するのに役立つことがあります。

次の EDS があります。

<asp:EntityDataSource ID="RidesEDS" runat="server" 
    ContextTypeName="RamRideOps.RamRideOpsEntities" EnableFlattening="False" 
    EntitySetName="Rides" EnableDelete="True" EnableUpdate="True">
</asp:EntityDataSource>

「Rides」のデータベースと、「validDate1」と「validDate2」の 2 つの日付を含む「AdminOptions」のデータベースがあります... 2 つの有効な日付の間に「CallTime」がある乗車のみを表示するには、EDS が必要です。これを容易にするために、page_load で 2 つの非表示フィールドに有効な日付 (hf_validDate1 と hf_validDate2) を設定しています。CallTimes を WHERE 句を使用して hf の値と比較することにより、これを達成するために EntityDataSource コードに追加する必要があるものを誰かに教えてもらえますか?

編集:

ここに私がこれまでに持っているものがありますが、うまくいきません..

<asp:EntityDataSource ID="RidesEDS" runat="server" 
        ContextTypeName="RamRideOps.RamRideOpsEntities" EnableFlattening="False" 
        EntitySetName="Rides" EnableDelete="True" EnableUpdate="True" Where="it.TimeOfCall > @validDate1Param AND it.TimeOfCall < @validDate2Param">

        <WhereParameters>
        <asp:ControlParameter ControlID="hf_validDate1" DbType="DateTime" 
          DefaultValue="1/01/2012 12:00:00 PM" Name="validDate1Param" PropertyName="Value" />
          <asp:ControlParameter ControlID="hf_validDate2" DbType="DateTime" 
          DefaultValue="1/01/2112 12:00:00 PM" Name="validDate2Param" PropertyName="Value" />
        </WhereParameters>
    </asp:EntityDataSource>

<asp:HiddenField ID="hf_validDate1" runat="server" />
<asp:HiddenField ID="hf_validDate2" runat="server" />

コード ビハインド:

protected void Page_Load(object sender, EventArgs e)
        {
            using(RamRideOpsEntities myEntities = new RamRideOpsEntities())
            {
                var validDates = (from a in myEntities.AdminOptions
                                  select new { a.ValidDate1, a.ValidDate2 }).FirstOrDefault();

                if(validDates != null)
                {
                    hf_validDate1.Value = validDates.ValidDate1.ToString();
                    hf_validDate1.Value = validDates.ValidDate2.ToString();
                }
            }            
        }
4

2 に答える 2

3

データソース宣言全体で Where パラメータを使用する必要があります。このリンクを確認できます。これには、物事を理解するための基本的なチュートリアルがあります。エンティティ データソースのフィルタリング

このような

<asp:EntityDataSource ID="RidesEDS" runat="server" 
    ContextTypeName="RamRideOps.RamRideOpsEntities" EnableFlattening="False" 
    EntitySetName="Rides" EnableDelete="True" EnableUpdate="True">

// this needs to be added 
<WhereParameters> 
        <asp:ControlParameter ControlID="yourHiddenFiledID" DbType="YourHiddenFieldDataType" 
          DefaultValue="SomeDefaultValue" Name="NameToDescribe" PropertyName="Text" />
      </WhereParameters>

</asp:EntityDataSource>

プログラムで追加したい場合は、このようにすることができます

RidesEDS.WhereParameters.Add("CategoryID", TypeCode.String, hiddenField.Value);
于 2012-01-26T05:46:51.390 に答える
0

Raviが投稿した回答を見るだけで、私にとってうまくいったのは、次のようなコードビハインドでそれを行うことでした:

RidesEDS.WhereParameters.Add("CategoryID", TypeCode.String, hiddenField.Value);

そして、これを EntityDataSource のサーバー タグに設定します。

AutoGenerateWhereClause="true"

私が追加したい唯一のことは、コードビハインドでそれを行う場合、パラメーターを追加する前に (!PostBack) チェックがあることを確認してください。私はポストバックでそれをやっていて、クレイジーな結果を得始めました。

于 2013-09-15T22:40:13.970 に答える