2013-08-19 55 views
0

使用以下標記時,選擇下拉列表時不填充我的詳細信息視圖。 where參數的id來自dropdwon選定的值。看起來控制參數運行不正常。下拉控件中EntitydataSource中的參數

<asp:UpdatePanel ID="updtEditContact" runat="server"> 
      <ContentTemplate> 
       <asp:DropDownList ID="ddlContacttoEdit" runat="server" CssClass="dropdowns" 
         AutoPostBack="True" ClientIDMode="Static"/> 
       <asp:DetailsView ID="dvEditContacts" runat="server" Height="50px" Width="125px" 
           AutoGenerateEditButton="True" CssClass="mGrid"/> 
       <asp:EntityDataSource ID="edsSelectedContact" runat="server" ConnectionString="name=webEntities" 
             DefaultContainerName="webEntities" EnableFlattening="False" 
             EntitySetName="contacts"> 
        <WhereParameters> 
         <asp:ControlParameter ControlID="ddlContactToEdit" Name="Id" 
          PropertyName="SelectedValue" Type="Int32" /> 
        </WhereParameters> 
       </asp:EntityDataSource> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="rblAddEditContact" EventName="SelectedIndexChanged"/> 
       <asp:AsyncPostBackTrigger ControlID="ddlContacttoEdit" EventName="SelectedIndexChanged"/> 
      </Triggers> 
     </asp:UpdatePanel> 

回答

1

在進一步的研究,這是單調乏味的,因爲沒有了很多,因爲我們所有可能做到我們的大多數EF工作的代碼背後的實際EntityDataSource控件,有三個問題

  1. 我沒有在EDS標記
  2. 在WhereParameter「類型」必須DBTYPE
  3. 的WhereParameter的name屬性多,在Where語句的變量相匹配的EDS標記一個地方屬性

這裏是工作的代碼:

<asp:UpdatePanel ID="updtEditContact" runat="server"> 
      <ContentTemplate> 
       <asp:DropDownList ID="ddlContacttoEdit" runat="server" CssClass="dropdowns" 
         AutoPostBack="True" ClientIDMode="Static"/> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="rblAddEditContact" EventName="SelectedIndexChanged"/> 
      </Triggers> 
     </asp:UpdatePanel> 
     <br /> 
     <asp:UpdatePanel ID="updatEditContactDetail" runat="server"> 
      <ContentTemplate> 
       <asp:DetailsView ID="dvEditContacts" runat="server" Height="50px" Width="300px" 
            DataSourceID="edsSelectedContact" DataKeyNames="Id" Visible="False" 
            CssClass="mDetail" FieldHeaderStyle-CssClass="fieldheader" 
            ItemStyle-CssClass="itemvalues" CommandRowStyle-CssClass="cmdRow" 
            EditRowStyle-CssClass="editvalues" ClientIDMode="Static" 
            InsertRowStyle-CssClass="insertvalues" RowStyle-CssClass="rowvalues"/> 
       <asp:EntityDataSource ID="edsSelectedContact" runat="server" ConnectionString="name=webEntities" 
             DefaultContainerName="webEntities" EnableFlattening="False" 
             EntitySetName="contacts" Where="it.Id = @ID"> 
        <WhereParameters> 
         <asp:ControlParameter ControlID="ddlContactToEdit" Name="ID" PropertyName="SelectedValue" DbType="Int32"/> 
        </WhereParameters> 
       </asp:EntityDataSource> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="ddlContacttoEdit" EventName="SelectedIndexChanged"/> 
      </Triggers> 
     </asp:UpdatePanel>