Asp.net 编辑和只读模式下的下拉列表

Asp.net 编辑和只读模式下的下拉列表,asp.net,Asp.net,你好,我在编辑模式和只读模式下有一个下拉列表。如果用户上传图片,我希望他们为上传的图片选择一个类别,并在gridview中显示,如下图所示。 当我包括“SelectedValue=”时,回答的问题 <EditItemTemplate> <asp:DropDownList ID="pictureEditCategories" runat="server" AppendDataBoun

你好,我在编辑模式和只读模式下有一个下拉列表。如果用户上传图片,我希望他们为上传的图片选择一个类别,并在gridview中显示,如下图所示。 当我包括“SelectedValue=”时,回答的问题

            <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>
您使用包含两个参数的参数化查询定义了一个数据源:

            <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>
@类别 @用户ID

            <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>
但是,您似乎仅通过控制参数填充其中一个参数

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

            <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>
修复此问题应该很容易,因为您已经从其他数据源中的查询字符串变量中提取了用户ID。您应该能够将QueryStringParameter复制到照片数据源的SelectParameters列表中。下面突出显示:

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

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

您也可以处理数据源的Selecting事件,并以编程方式在查询中设置UserID,但上述选项最简单。我只想让您了解所有选项。

为了帮助其他可能与您有类似问题的人,是否可以提供您发现的解决方案在上面的解释中缺少
            <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>