2010-08-11 3 views
0

Utilisation de Visual Web Developer Express 2010 avec ASP.NET 4.0.Comment lier dropdownlist dans EditItemTemplate dans le contrôle FormView?

J'ai une FormView et je veux définir une valeur par défaut à partir de la base de données. Je ne peux pas l'obtenir pour lier à la valeur dans la base de données. Mon FormView ressemble à ceci:

<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>  

Le EditItemTemplate n'a même pas charger lorsque je clique sur le bouton modifier mon contrôle FormView, mais je ne reçois pas de message d'erreur.

Répondre

3

vous devez utiliser formview événement Databound comme

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; 
    } 
} 
+0

Merci pour la réponse. Y at-il un moyen de le faire sans utiliser de code derrière? –

+0

nop, c'est ce que je vous ai dit, sinon SelectedValue = '<% # Bind ("strategyId")%>' cette méthode fonctionnera lorsque vous lierez cette valeur particulière de la même source –

+0

Ah ok, merci. Comment puis-je obtenir la valeur DB? Je veux juste l'ID de stratégie en cours qui a été affiché dans le ItemTemplate avant que le bouton Modifier ne soit cliqué. Je suis tout nouveau à ASP.NET - apprécie toute aide. –

4

Vous devez faire ce qui suit pour lier un DropDownList au EditItemTemplate:

  1. Ajouter le DropDownList et son DataSource au EditItemTemplate.
  2. Définissez les paramètres DropDownList:

    DataSourceID="SqlDataSourceDropDownlist" SelectedValue=<%# Bind("ValueToBind") %> 
    DataTextField="ValueToDisplay" DataValueField="ValueToBind" 
    
  3. Définissez les ListView/FormView DataSource <UdateParameters>: <asp:Parameter Name="RankID" Type="Int32" />

Questions connexes