2010-10-11 82 views
1

你好,我有一个在编辑模式和只读模式的下拉列表。如果用户上传图片,我希望他们为上传的图片选择一个类别,并将其显示在gridview中(如下图所示)。 当我在编辑和项目模板模式中包括“SelectedValue ='<%#绑定(”CategoryID“)”,我得到这个错误“'PictureReadOnlyCategories'有一个SelectedValue无效,因为它不存在于项目列表中。 参数名称:值“编辑和只读模式的下拉列表

当我从编辑和项目模板中删除”SelectedValue ='<%#绑定(“CategoryID”)“,我得到下面的图片(截图)的结果。如果你可以看到下面的图片,这个类别没有被选中,它只是显示 - 没有类别 - 即使当我选择一个类别的图片。

我希望当一张图片上传,我选择类别,以显示在gridview上。该错误消息的代码如下:

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

当我从项目和编辑模板中删除的SelectedValue = '<%#绑定( “类别ID”)%>',我得到下面的图片的结果。 请,我会感谢您的帮助。

请您可以编辑代码或解释给我,因为我还在学习ASP.net

alt text

回答

-1

问题回答

您有一个包含两个参数的参数化查询定义数据源:

@CategoryID @UserID

豪ver,你似乎只是通过控制参数填充其中一个参数。

修复这应该是很容易的,你从查询字符串变量在你和其他数据源已经拉动了用户名。您应该能够将QueryStringParameter复制到您的照片DataSource的SelectParameters列表中。下面重点:

你也可以处理数据源的选择事件,并设置编程的查询方式,用户名,但上述选项是最容易的。我只是想让你知道你的所有选择。

+0

为了帮助其他可能与您有类似问题的人,是否可以提供您发现的解决方案? – 2010-10-18 22:09:05

+0

onfire4JesusCollins 2010-10-19 14:24:42

+0

我缺少 in 查看上面的解释 – onfire4JesusCollins 2010-10-19 14:26:44