2010-10-11 4 views
1

Bonjour, j'ai une liste déroulante en mode édition et en mode lecture seule. Si les utilisateurs téléchargent des images, je veux qu'ils choisissent une catégorie pour les photos téléchargées et les affichent dans une grille comme ci-dessous (voir l'image ci-dessous). Lorsque j'inclue "SelectedValue = '<% # Bind (" CategoryID ")" en mode édition et modèle d'élément, j'obtiens cette erreur "' PictureReadOnlyCategories 'a une valeur SelectedValue qui n'est pas valide car elle n'existe pas dans la liste des éléments. Nom du paramètre: valeur "liste déroulante en mode édition et lecture seule

Lorsque j'ai supprimé" SelectedValue = '<% # Bind ("CategoryID") "de l'édition et du modèle d'élément, j'obtiens le résultat sur l'image ci-dessous (capture d'écran). Si vous pouvez voir l'image ci-dessous la catégorie n'est pas sélectionnée, il suffit d'afficher le - Pas de catégorie - même lorsque j'ai choisi une catégorie pour l'image.

Je veux quand une photo est téléchargée et que j'ai la catégorie choisie, pour l'afficher sur la grille. Le code pour le message d'erreur est ci-dessous:

  <EditItemTemplate> 
       <asp:DropDownList ID="pictureEditCategories" runat="server" 
        AppendDataBoundItems="True" 
       DataSourceID="categoriesDataSource" 
        DataTextField="Name" DataValueField="CategoryID" 
        SelectedValue='<%# Bind("CategoryID") %>' ValidationGroup="PictureEdit" > 
        <asp:ListItem Value="" Text="--No Category -- "/> 
       </asp:DropDownList> 
      </EditItemTemplate> 

      <ItemTemplate> 
       <asp:DropDownList ID="PictureReadOnlyCategories" runat="server" 
        AppendDataBoundItems="True" DataSourceID="categoriesDataSource" 
        DataTextField="Name" DataValueField="CategoryID" Enabled="False" 
        SelectedValue='<%# Bind("CategoryID") %>' ValidationGroup="PictureEdit" 
        > 
        <asp:ListItem Value="">-- No Category --</asp:ListItem> 
       </asp:DropDownList> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Title" SortExpression="Title"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox1" runat="server" EnableViewState="False" 
        Text='<%# Bind("Title") %>'></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
        ControlToValidate="TextBox1" Display="Dynamic" 
        ErrorMessage="must enter a title" ValidationGroup="PictureEdit"></asp:RequiredFieldValidator> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("Title") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Description" SortExpression="Description"> 
      <EditItemTemplate> 
       <asp:TextBox ID="TextBox2" runat="server" Columns="25" Rows="4" 
        Text='<%# Bind("Description") %>' TextMode="MultiLine"></asp:TextBox> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" 
        ControlToValidate="TextBox2" Display="Dynamic" 
        ErrorMessage="you must enter a description" ValidationGroup="PictureEdit"></asp:RequiredFieldValidator> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label2" runat="server" Text='<%# Bind("Description") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Date Added" SortExpression="UploadedOn"> 
      <EditItemTemplate> 
       <asp:Label ID="Label4" runat="server" Text='<%# Bind("UploadedOn") %>'></asp:Label> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label3" runat="server" Text='<%# Bind("UploadedOn") %>'></asp:Label> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:ImageField DataImageUrlField="PictureID" 
      DataImageUrlFormatString="~/UploadedImages/{0}.jpg" HeaderText="Image" 
      ReadOnly="True"> 
      <ControlStyle Width="100px" /> 
     </asp:ImageField> 
    </Columns> 
    <EditRowStyle BackColor="#2461BF" /> 
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
    <RowStyle BackColor="#EFF3FB" /> 
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
    <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
    <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
    <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
    <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
</asp:GridView> 

Quand je supprime la SelectedValue = '<% # Bind ("CategoryID")%>' à partir du modèle de l'article et modifier, Je reçois le résultat pour l'image ci-dessous. S'il vous plaît, je vais apprécier votre aide.

S'il vous plaît, vous pouvez modifier le code ou me l'expliquer depuis im encore apprendre ASP.net

alt text

Répondre

-1

question répondue

Vous avez un DataSource défini avec une requête paramétrées qui contient deux paramètres :

@CategoryID @UserID

Howe En fait, vous semblez remplir seulement l'un des paramètres via les paramètres de contrôle.

Fixing cela devrait être assez facile que vous tirez déjà le code d'utilisateur à partir d'une variable chaîne de requête dans l'autre DataSource. Vous devriez être capable de simplement copier le QueryStringParameter dans votre liste de SelectParameters pour votre DataSource photo. Mis en surbrillance ci-dessous:

Vous pouvez également gérer l'événement Sélection de la source de données et définir la programatically UserID dans la requête de cette façon, mais l'option mentionnée ci-dessus est plus facile. Je veux juste que tu sois au courant de toutes tes options.

+0

Afin d'aider les autres qui pourraient avoir un problème similaire au vôtre, serait-il possible de fournir la solution que vous avez découverte? –

+0

I manquait dans Voir l'explication ci-dessus – onfire4JesusCollins

Questions connexes