数据绑定期间收集修改错误

时间:2015-06-17 00:46:20

标签: c# asp.net webforms

在' /'中收到服务器错误应用

The control collection cannot be modified during Databind, Init, Load, PreRender or Unload phases.
    Line 113:  if (cbShowDiscontinued.Checked)
    Line 114:  {
    Line 115:      gvProducts.DataSourceID=dsDiscountinuedProducts.ID);
    Line 116:  }
    Line 117:  else

说错误在第115行,但我不明白为什么。我已尝试浏览所有SQL连接字符串并确保所有必要的

我尝试过改变一些事情,但无济于事 下面是我的代码和代码。我们正在使用本地数据库。

    <%@ Page Title="WGProductsCRUD" Language="C#"     

    MasterPageFile="~/WF2Master.master" AutoEventWireup="true"     

    CodeFile="WGProductsCRUD.aspx.cs" Inherits="WGProductsCRUD" %>

    <asp:Content ID="Content1" ContentPlaceHolderID="cphHead" runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="cphMain" runat="Server">
    <h2>WG Products CRUD</h2>


    <asp:MultiView ID="mvProducts" runat="server" ActiveViewIndex="0">
        <asp:View ID="vwMaster" runat="server">
    <asp:GridView ID="gvProducts" runat="server" AllowPaging="True"   

    AllowSorting="True" AutoGenerateColumns="False"   

    DataSourceID="dsActiveProducts" DataKeyNames="ProdId">
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
            <asp:BoundField DataField="ProdName" HeaderText="Products" 

    SortExpression="ProdName" />
            <asp:BoundField DataField="Price" DataFormatString="{0:c}" 

    HeaderText="Price" SortExpression="Price" />
            <asp:BoundField DataField="ProductStatusName" HeaderText="Status" 

    SortExpression="ProductStatusName" />
            <asp:BoundField DataField="CategoryName" HeaderText="Category"     

    SortExpression="CategoryName" />
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server"     

    CausesValidation="False" CommandName="Delete" OnClientClick="return  

    confirm('Are you sure?')" OnPreRender="cbShowDiscontinued_CheckedChanged" 

    Text='<%# Eval("ButtonText") %>'></asp:LinkButton>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

    <asp:SqlDataSource ID="dsActiveProducts" runat="server"
        ConnectionString="<%$ ConnectionStrings:WGConString %>"
        DeleteCommand="UPDATE [WGProducts] SET ProdStatusId=4 WHERE [ProdId]   

    = 

    @ProdId"
        InsertCommand="INSERT INTO [WGProducts] ([ProdName], [Price]) VALUES   

    (@ProdName, @Price)"
        SelectCommand="SELECT WGProducts.ProdId, WGProducts.ProdName, 

    WGProducts.Price, WGCategories.CategoryId, 

    WGProductStatuses.ProductStatusName, WGCategories.CategoryName,  

'Deactivate' 

    AS ButtonText FROM WGProducts LEFT OUTER JOIN WGCategories ON 

    WGProducts.ProdCategoryId = WGCategories.CategoryId LEFT OUTER JOIN 

    WGProductStatuses ON WGProducts.ProdStatusId = 

    WGProductStatuses.ProductStatusId WHERE (WGProducts.ProdStatusId &lt;   

    @ProdStatusId) ORDER BY WGProducts.ProdName"
        UpdateCommand="UPDATE [WGProducts] SET [ProdName] = @ProdName, 


[Price] = 

    @Price WHERE [ProdId] = @ProdId">
        <DeleteParameters>
            <asp:Parameter Name="ProdId" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="ProdName" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
        </InsertParameters>
        <SelectParameters>
            <asp:Parameter DefaultValue="4" Name="ProdStatusId" Type="Int32" 

/>
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="ProdName" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="ProdId" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>

    <asp:SqlDataSource ID="dsDiscontinuedProducts" runat="server"   

    ConnectionString="<%$ ConnectionStrings:WGConString %>"   

DeleteCommand="Update 

    [WGProducts] set ProdStatusId=1 WHERE [ProdId] = @ProdId"     

    InsertCommand="INSERT 

    INTO [WGProducts] ([ProdName], [Price]) VALUES (@ProdName, @Price)" 

    SelectCommand="SELECT WGProducts.ProdId, WGProducts.ProdName,     

    WGProducts.Price, 

    WGCategories.CategoryName, WGProductStatuses.ProductStatusName, 

'Reactivate' 

    AS 

    ButtonText FROM WGProducts LEFT OUTER JOIN WGProductStatuses ON 

    WGProducts.ProdStatusId = WGProductStatuses.ProductStatusId LEFT OUTER 

JOIN 

    WGCategories ON WGProducts.ProdCategoryId = WGCategories.CategoryId WHERE 

    (WGProducts.ProdStatusId = @ProdStatusId) ORDER BY WGProducts.ProdName" 

    UpdateCommand="UPDATE [WGProducts] SET [ProdName] = @ProdName, [Price] =     

    @Price 

    WHERE [ProdId] = @ProdId">
        <DeleteParameters>
            <asp:Parameter Name="ProdId" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="ProdName" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
        </InsertParameters>
        <SelectParameters>
            <asp:Parameter DefaultValue="4" Name="ProdStatusId" Type="Int32" 

 />
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="ProdName" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="ProdId" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>

    <asp:LinkButton ID="btnAddProduct" runat="server" 

    OnClick="btnAddProduct_Click">Add A Product</asp:LinkButton>

        </asp:View>

        <asp:View ID="vwDetails" runat="server" EnableViewState="False">
    <asp:DetailsView ID="dvSelectedProduct" runat="server" Height="50px" 

    Width="494px" AutoGenerateRows="False" DataKeyNames="ProdId" 

    DataSourceID="dsSelectedProduct">
        <Fields>
            <asp:BoundField DataField="ProdId" HeaderText="Prod Id" 

    InsertVisible="False" ReadOnly="True" SortExpression="ProdId" />
            <asp:TemplateField HeaderText="Prod Name" 

SortExpression="ProdName">
                <EditItemTemplate>
                    <asp:TextBox ID="tbProductName" runat="server" Text='<%# 

    Bind("ProdName") %>'></asp:TextBox>
                    <asp:RequiredFieldValidator ID="rfvProduct" 

runat="server"
                        ControlToValidate="tbProductName"  
                        ErrorMessage="*Required" 
                        Font-Italic="True" 
                        ForeColor="Red"></asp:RequiredFieldValidator>
                    &nbsp;
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="tbProductName" runat="server" Text='<%# 

    Bind("ProdName") %>'></asp:TextBox>
                    <asp:RequiredFieldValidator ID="rfvProduct" 

 runat="server"
                        ControlToValidate="tbProductName"
                        ErrorMessage="*Required"
                        Font-Italic="True"
                        ForeColor="Red"></asp:RequiredFieldValidator>
                    &nbsp;
                </InsertItemTemplate>

                <ItemTemplate>
                    <asp:Label ID="Label2" runat="server" Text='<%# 

    Bind("ProdName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Description" 

    SortExpression="Description">
                <EditItemTemplate>
                    <asp:TextBox ID="tbDescription" runat="server"
                        Text='<%# Bind("Description") %>'
                        Height="88px"
                        TextMode="MultiLine"
                        Width="183px"></asp:TextBox>
                </EditItemTemplate>

                <InsertItemTemplate>
                    <asp:TextBox ID="tbDescription" runat="server"
                        Text='<%# Bind("Description") %>'
                        Height="88px"
                        TextMode="MultiLine"
                        Width="183px"></asp:TextBox>
                </InsertItemTemplate>

                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server"
                        Text='<%# Bind("Description") %>'></asp:Label>
                </ItemTemplate>

            </asp:TemplateField>
            <asp:BoundField DataField="Price" DataFormatString="{0:c}" 

    HeaderText="Price" SortExpression="Price" />
            <asp:BoundField DataField="ModelNumber" HeaderText="Model Number" 

    SortExpression="ModelNumber" />
            <asp:TemplateField HeaderText="Prod Image" 

    SortExpression="ImageFileName">
                <EditItemTemplate>
                    <asp:FileUpload ID="fupProdImage" runat="server" />
                    <%--The hidden field will help us reset the original    

image 

    being used if the user doesn't change the image--%>
                    <asp:HiddenField ID="hfOriginalImageName" runat="server" 

    Value='<%# Bind("ImageFileName") %>' />
                </EditItemTemplate>

                <InsertItemTemplate>
                    <asp:FileUpload ID="fupProdImage" runat="server" />
                    <%--No hidden field needed here--%>
                </InsertItemTemplate>
                <ItemTemplate>

                    <%--Replaced this with custom-databound image control--%>
                    <%--                    <asp:Label ID="Label3" 

runat="server" 

    Text='<%# Bind("ImageFileName") %>'></asp:Label>--%>
                    <asp:Image ID="imgProductImage" runat="server"
                        Height="200px"
                        ImageUrl='<%# Eval("ImageFileName", 

    "~/Images/Products/{0}") %>' />
                </ItemTemplate>
            </asp:TemplateField>

            <asp:BoundField DataField="LastUpdate"
                DataFormatString="{0:f}"
                HeaderText="Last Update"
                SortExpression="LastUpdate" />
            <asp:TemplateField HeaderText="Category Name"
                SortExpression="CategoryName">
                <EditItemTemplate>
                    <asp:DropDownList ID="ddlCategoryName" runat="server"
                        AppendDataBoundItems="True"
                        DataSourceID="dsCategories"
                        DataTextField="CategoryName"
                        DataValueField="CategoryId"
                        SelectedValue='<%# Bind("ProdCategoryId") %>'>
                        <asp:ListItem
                            Value="">[--Make a Selection--]</asp:ListItem>
                    </asp:DropDownList>
                    <asp:SqlDataSource ID="dsCategories" runat="server"
                        ConnectionString="<%$ ConnectionStrings:WGConString     

%>"
                        SelectCommand="SELECT [CategoryId], [CategoryName]  

FROM 

    [WGCategories]"></asp:SqlDataSource>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:DropDownList ID="ddlCategoryName" runat="server"
                        AppendDataBoundItems="True"
                        DataSourceID="dsSelectedProduct"
                        DataTextField="CategoryName"
                        DataValueField="CategoryId"
                        SelectedValue='<%# Bind("ProdCategoryId") %>'>
                        <asp:ListItem
                            Value="">[--Make a Selection--]</asp:ListItem>
                    </asp:DropDownList>
                    <asp:SqlDataSource ID="dsCategories" runat="server"
                        ConnectionString="<%$ ConnectionStrings:WGConString  

%>"
                        SelectCommand="SELECT [CategoryId], [CategoryName] 

FROM 

    [WGCategories]"></asp:SqlDataSource>

                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label4" runat="server" Text='<%# 

    Bind("CategoryName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Product Status Name"
                SortExpression="ProductStatusName">
                <EditItemTemplate>
                    <asp:DropDownList ID="ddlProductStatusName"   

runat="server"
                        AppendDataBoundItems="True"
                        DataSourceID="dsProductStatus"
                        DataTextField="ProductStatusName"
                        DataValueField="ProductStatusId"
                        SelectedValue='<%# Bind("ProdStatusId") %>'>
                        <asp:ListItem Value="">[--Make a Selection--]

    </asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ID="rfvProductStatusName" 

    runat="server"
                        ControlToValidate="ddlProductStatusName"
                        ErrorMessage="*Required"
                        Font-Italic="True"
                        ForeColor="Red"></asp:RequiredFieldValidator>

                    <asp:SqlDataSource ID="dsProductStatus" runat="server"
                        ConnectionString="<%$ ConnectionStrings:WGConString 

%>"
                        SelectCommand="SELECT [ProductStatusId], 

    [ProductStatusName] FROM [WGProductStatuses]"></asp:SqlDataSource>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:DropDownList ID="ddlProductStatusName" 

runat="server"
                        AppendDataBoundItems="True"
                        DataSourceID="dsProductStatus"
                        DataTextField="ProductStatusName"
                        DataValueField="ProductStatusId"
                        SelectedValue='<%# Bind("ProdStatusId") %>'>
                        <asp:ListItem Value="">[--Make a Selection--]

    </asp:ListItem>
                    </asp:DropDownList>
                    <asp:SqlDataSource ID="dsProductStatus" runat="server"
                        ConnectionString="<%$ ConnectionStrings:WGConString 

%>"
                        SelectCommand="SELECT [ProductStatusId], 

    [ProductStatusName] FROM [WGProductStatuses]"></asp:SqlDataSource>

                    <asp:RequiredFieldValidator ID="rfvProductStatusName" 

    runat="server"
                        ControlToValidate="ddlProductStatusName"
                        ErrorMessage="*Required"
                        Font-Italic="True"
                        ForeColor="Red"></asp:RequiredFieldValidator>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label5" runat="server" Text='<%# 

    Bind("ProductStatusName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Vendor Name" 

    SortExpression="VendorName">
                <EditItemTemplate>
                    <asp:DropDownList ID="ddlVendors" runat="server"
                        DataSourceID="dsVendors"
                        DataTextField="VendorName"
                        DataValueField="VendorId" AppendDataBoundItems="True" 

    SelectedValue='<%# Bind("ProdVendorId") %>'>
                        <asp:ListItem
                            Value="">[--Make a Selection--]</asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ID="rfvVendorName" 

runat="server"
                        ControlToValidate="ddlVendors"
                        ErrorMessage="*Required"
                        Font-Italic="True"
                        ForeColor="Red"></asp:RequiredFieldValidator>
                    <asp:SqlDataSource ID="dsVendors" runat="server"
                        ConnectionString="<%$ ConnectionStrings:WGConString 

%>"
                        SelectCommand="SELECT [VendorId], [VendorName] FROM 

    [WGVendors]"></asp:SqlDataSource>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:DropDownList ID="ddlVendors" runat="server"
                        DataSourceID="dsVendors"
                        DataTextField="VendorName"
                        DataValueField="VendorId" AppendDataBoundItems="True" 

    SelectedValue='<%# Bind("ProdVendorId") %>'>
                        <asp:ListItem Value="">[--Make a Selection--]

    </asp:ListItem>
                    </asp:DropDownList>
                    <asp:RequiredFieldValidator ID="rfvVendorName" 

runat="server"
                        ControlToValidate="ddlVendors"
                        ErrorMessage="*Required"
                        Font-Italic="True"
                        ForeColor="Red"></asp:RequiredFieldValidator>
                    <asp:SqlDataSource ID="dsVendors" runat="server"
                        ConnectionString="<%$ ConnectionStrings:WGConString  

%>"
                        SelectCommand="SELECT [VendorId], [VendorName] FROM 

    [WGVendors]"></asp:SqlDataSource>

                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label6" runat="server" Text='<%# 

    Bind("VendorName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField ShowEditButton="True" ShowInsertButton="True"   

/>
        </Fields>
    </asp:DetailsView>

    <asp:SqlDataSource ID="dsSelectedProduct" runat="server"   

ConnectionString="

    <%$ ConnectionStrings:WGConString %>" DeleteCommand="DELETE FROM 

[WGProducts] 

    WHERE [ProdId] = @ProdId" InsertCommand="INSERT INTO [WGProducts]  

    ([ProdName], 

    [Description], [Price], [ModelNumber], [ImageFileName], [LastUpdate], 

    [ProdCategoryId], [ProdStatusId], [ProdVendorId]) VALUES (@ProdName, 

    @Description, @Price, @ModelNumber, @ImageFileName, @LastUpdate,  

    @ProdCategoryId, 

    @ProdStatusId, @ProdVendorId)" SelectCommand="SELECT WGProducts.ProdId, 

    WGProducts.ProdName, WGProducts.Description, WGProducts.Price, 

    WGProducts.ModelNumber, WGProducts.ImageFileName, WGProducts.LastUpdate, 

    WGProducts.ProdCategoryId, WGProducts.ProdStatusId, 

WGProducts.ProdVendorId, 

    WGCategories.CategoryName, WGVendors.VendorName, 

    WGProductStatuses.ProductStatusName FROM WGProducts LEFT OUTER JOIN     

    WGCategories 

    ON WGProducts.ProdCategoryId = WGCategories.CategoryId LEFT OUTER JOIN    

    WGVendors 

    ON WGProducts.ProdVendorId = WGVendors.VendorId LEFT OUTER JOIN 

    WGProductStatuses 

    ON WGProducts.ProdStatusId = WGProductStatuses.ProductStatusId WHERE 

    (WGProducts.ProdId = @ProdId)" UpdateCommand="UPDATE [WGProducts] SET   

    [ProdName] 

    = @ProdName, [Description] = @Description, [Price] = @Price, 

[ModelNumber] = 

    @ModelNumber, [ImageFileName] = @ImageFileName, [LastUpdate] = 

@LastUpdate, 

    [ProdCategoryId] = @ProdCategoryId, [ProdStatusId] = @ProdStatusId, 

    [ProdVendorId] = @ProdVendorId WHERE [ProdId] = @ProdId" 

    OnInserted="dsSelectedProduct_Inserted" 

    OnInserting="dsSelectedProduct_Inserting" 

    OnUpdated="dsSelectedProduct_Updated"    

    OnUpdating="dsSelectedProduct_Updating">
        <DeleteParameters>
            <asp:Parameter Name="ProdId" Type="Int32" />
        </DeleteParameters>
        <InsertParameters>
            <asp:Parameter Name="ProdName" Type="String" />
            <asp:Parameter Name="Description" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="ModelNumber" Type="String" />
            <asp:Parameter Name="ImageFileName" Type="String" />
            <asp:Parameter Name="LastUpdate" Type="DateTime" />
            <asp:Parameter Name="ProdCategoryId" Type="Int32" />
            <asp:Parameter Name="ProdStatusId" Type="Int32" />
            <asp:Parameter Name="ProdVendorId" Type="Int32" />
        </InsertParameters>
        <SelectParameters>
            <asp:ControlParameter ControlID="gvProducts" Name="ProdId" 

    PropertyName="SelectedValue" Type="Int32" />
        </SelectParameters>
        <UpdateParameters>
            <asp:Parameter Name="ProdName" Type="String" />
            <asp:Parameter Name="Description" Type="String" />
            <asp:Parameter Name="Price" Type="Decimal" />
            <asp:Parameter Name="ModelNumber" Type="String" />
            <asp:Parameter Name="ImageFileName" Type="String" />
            <asp:Parameter Name="LastUpdate" Type="DateTime" />
            <asp:Parameter Name="ProdCategoryId" Type="Int32" />
            <asp:Parameter Name="ProdStatusId" Type="Int32" />
            <asp:Parameter Name="ProdVendorId" Type="Int32" />
            <asp:Parameter Name="ProdId" Type="Int32" />
        </UpdateParameters>
    </asp:SqlDataSource>

    <asp:LinkButton ID="btnBack" runat="server" OnClick="btnBack_Click">Go 

    Back</asp:LinkButton>

        </asp:View>

    </asp:MultiView>
    <asp:CheckBox ID="cbShowDiscontinued" Text="Show discontinued products" 

    runat="server" AutoPostBack="True" Checked="True" 

    OnCheckedChanged="cbShowDiscontinued_CheckedChanged" />





    </asp:Content>

    <%--<asp:Content ID="Content3" ContentPlaceHolderID="cphSidebar"     

    Runat="Server">

    </asp:Content>--%>


**Below is the Code Behind:**



    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class WGProductsCRUD : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnSoftDelete_PreRender(object sender, EventArgs e)
    {
        #region ToDo: non-working prerender code to fix for dynamic button 

text
        //Button btn=(Button)gvProducts.FindControl("btnSoftDelete");
        //btn.Text = "foo";
        #endregion
    }
    protected void dsSelectedProduct_Inserted(object sender,                  
    SqlDataSourceStatusEventArgs e)
    {
        //re databind gridview
        gvProducts.DataBind();
        //switch views
        mvProducts.SetActiveView(vwMaster);//or mvProducts.ActiveViewIndex=0;
    }
    protected void dsSelectedProduct_Inserting(object sender,                          
    SqlDataSourceCommandEventArgs e)
    {
        //handle file upload logic for an insert (new record)
        FileUpload fupload =
    (FileUpload)dvSelectedProduct.FindControl("fupProdImage");

        //locate the file that is needed inside the details view
        string imageName = "NoImage.jpg";
        //if an image is provided, handle it and send filename to db
        if (fupload.HasFile)
        {
            //get the image name from the fup
            imageName = fupload.FileName;
            //randomly generate the image file name to avoid overwriting 

files 
    with common file names from different users.  Assign randomly generated 
    (GUID) unique names with correct extension (.jpg, .bmp, etc.)

            //get extension of orig file
            string ext = imageName.Substring(imageName.LastIndexOf("."));
            //this will find the . and grab everything after that- the 

extension 
    of the file.

            //Guid it up!
            imageName = Guid.NewGuid() + ext;

            //save the file to the server
            fupload.SaveAs(Server.MapPath("~/Images/Products/" + imageName));
        }

        //after the if statement is done, save the file name string to the 
    database record in the correct column
        e.Command.Parameters["@ImageFileName"].Value = imageName;

    }
    protected void dsSelectedProduct_Updated(object sender, 
    SqlDataSourceStatusEventArgs e)
    {
        //re databind grid view
        gvProducts.DataBind();
        //switch views
        mvProducts.SetActiveView(vwMaster);
    }

    protected void dsSelectedProduct_Updating(object sender, 
    SqlDataSourceCommandEventArgs e)
    {
        //handle file upload logic for updating an existing record
        FileUpload fupload = 
    (FileUpload)dvSelectedProduct.FindControl("fupProdImage");

        //if an image is provided, handle it and send filename to db
        if (fupload.HasFile)
        {
            //get the image name from the fup
            string imageName = fupload.FileName;
            //randomly generate the image file name to avoid overwriting 

files 
    with common file names from different users.  Assign randomly generated 
    (GUID) unique names with correct extension (.jpg, .bmp, etc.)

            //get extension of orig file
            string ext = imageName.Substring(imageName.LastIndexOf("."));
            //this will find the . and grab everything after that- the 

extension 
    of the file.

            //Guid it up!
            imageName = Guid.NewGuid() + ext;

            //save the file to the server
            fupload.SaveAs(Server.MapPath("~/Images/Products/" + imageName));
            //save the file name string to the database record in the correct 
    column

            e.Command.Parameters["@ImageFileName"].Value = imageName;

        }
        //hidden field is two-way bound and will send the existing filename 

back 
    with record being updated
    }
    protected void btnAddProduct_Click(object sender, EventArgs e)
    {
        //switch views
        mvProducts.SetActiveView(vwDetails);
        //set details view in insert mode
        dvSelectedProduct.ChangeMode(DetailsViewMode.Insert);
    }
    protected void btnBack_Click(object sender, EventArgs e)
    {
        //switch views 
        mvProducts.SetActiveView(vwMaster);
        //redatabind the gridview
        gvProducts.DataBind();
        //just to be safe : set details view to read only mode
        dvSelectedProduct.ChangeMode(DetailsViewMode.ReadOnly);
    }
    protected void cbShowDiscontinued_CheckedChanged(object sender, EventArgs 

e)
    {
        if (cbShowDiscontinued.Checked)
        {
            gvProducts.DataSourceID = dsDiscontinuedProducts.ID;
        }
        else
        {
            gvProducts.DataSourceID = dsActiveProducts.ID;
        }
        gvProducts.DataBind();//go get the data of either discontinued or 

active 
    products
    }

    }

1 个答案:

答案 0 :(得分:0)

删除.ID

if (cbShowDiscontinued.Checked)
        {
            gvProducts.DataSourceID = dsDiscontinuedProducts;
        }
        else
        {
            gvProducts.DataSourceID = dsActiveProducts;
        }