Как связать выпадающий список в EditItemTemplate в элементе управления FormView? - PullRequest
1 голос
/ 11 августа 2010

Использование Visual Web Developer Express 2010 с ASP.NET 4.0.

У меня есть FormView, и я хочу установить значение по умолчанию из базы данных. Я не могу связать его со значением в базе данных. Мой FormView выглядит так:

<asp:FormView 
ID="frmOrderDetails" 
DataSourceID="sdsFormOrderDetails" 
runat="server" 
DataKeyNames="orderId">

<EditItemTemplate>
    <h3>Edit Order Details</h3>

    <asp:Label ID="lblStrategy" Text="Strategy:" AssociatedControlID="ddlStrategies" runat="server"  />
    <asp:DropDownList SelectedValue='<%# Bind("strategyId") %>'
    ID="ddlStrategies" 
    runat="server" 
    DataTextField="strategy" 
    DataValueField="strategyId" 
    DataSourceID="sdsStrategies"
     />

    <asp:LinkButton
    id="lnkUpdate"
    Text="Update Order"
    CommandName="Update"
    Runat="server" />
    |
    <asp:LinkButton
    id="lnkCancel"
    Text="Cancel"
    CommandName="Cancel"
    Runat="server" />

</EditItemTemplate>
</asp:FormView>

<asp:SqlDataSource ID="sdsFormOrderDetails" runat="server" 
    ConnectionString="<%$ ConnectionStrings:LocalSQLServer %>" 
    ProviderName="<%$ ConnectionStrings:LocalSQLServer.ProviderName %>"  
    SelectCommand="usp_GetOrderDetails" SelectCommandType="StoredProcedure" 
    UpdateCommand="usp_UpdateOrder" UpdateCommandType="StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter Name="orderId" ControlID="grdOrders" PropertyName="SelectedDataKey.Value" />
    </SelectParameters>
    <UpdateParameters>
        <asp:ControlParameter Name="orderId" ControlID="grdOrders" />
    </UpdateParameters>
</asp:SqlDataSource>                     

<asp:SqlDataSource ID="sdsStrategies" runat="server"
    ConnectionString="<%$ ConnectionStrings:LocalSQLServer %>" 
    ProviderName="<%$ ConnectionStrings:LocalSQLServer.ProviderName %>"  
    SelectCommand="usp_GetStrategiesDropDown">   
</asp:SqlDataSource>    

EditItemTemplate даже не загружается, когда я нажимаю кнопку редактирования на моем элементе управления FormView, но я также не получаю сообщение об ошибке.

Ответы [ 2 ]

5 голосов
/ 21 февраля 2013

Вам необходимо сделать следующее, чтобы связать DropDownList с EditItemTemplate:

  1. Добавьте DropDownList и DataSource к EditItemTemplate.
  2. Установите DropDownList параметры:

    DataSourceID="SqlDataSourceDropDownlist" SelectedValue=<%# Bind("ValueToBind") %>
    DataTextField="ValueToDisplay" DataValueField="ValueToBind"
    
  3. Установите ListView / FormView DataSource <UdateParameters>: <asp:Parameter Name="RankID" Type="Int32" />

3 голосов
/ 11 августа 2010

вам нужно использовать событие вида dataview, например

 protected void frmOrderDetails_DataBound(object sender, EventArgs e)
{
    if (frmOrderDetails.CurrentMode == FormViewMode.Edit)
    {
        DropDownList ddlStrategies = (DropDownList)frmOrderDetails.FindControl("ddlStrategies");
        ddlStrategies.SelectedValue = Your DB Value Goes here;
    }
}
...