1

我有一个与我正在使用 GridView 的任务相关的问题。当我运行我的程序时,GridView 不工作,我无法弄清楚为什么会发生这种情况。我已经配置了我的数据库,那里一切都很好。我真的很感激这方面的一些帮助。

这是我的源代码:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="ProductMaintenance.aspx.cs" Inherits="ProductMaintenance" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    <style type="text/css">
        .style2
        {
            width: 125px;
        }
        .style3
        {
            width: 182px;
        }
    </style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <p>
        <h3 style="font-size: larger">Product Maintenance</h3><br />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            EnableSortingAndPagingCallbacks="True" Width="664px" 
                        onrowdeleted="GridView1_RowDeleted" onrowupdated="GridView1_RowUpdated">
        </asp:GridView>
        <br />
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:TechSupport_DataConnectionString %>" 
            DeleteCommand="DELETE FROM Products WHERE (ProductCode = @Original_ProductCode) AND (Name = @Original_Name) AND (Version = @Original_Version) AND (ReleaseDate = @Original_ReleaseDate)" 
            InsertCommand="INSERT INTO Products(ProductCode, Name, Version, ReleaseDate) VALUES (@ProductCode, @Name, @Version, @ReleaseDate)" 
            SelectCommand="SELECT ProductCode, Name, Version, ReleaseDate FROM Products" 
            UpdateCommand="UPDATE Products SET Name = @Name, Version = @Version, ReleaseDate = @ReleaseDate WHERE (Name = @original_Name) AND (Version = @original_Version) AND (ReleaseDate = @original_ReleaseDate) AND (ProductCode = @original_ProductCode)">
            <DeleteParameters>
                <asp:Parameter Name="Original_ProductCode" />
                <asp:Parameter Name="Original_Name" />
                <asp:Parameter Name="Original_Version" />
                <asp:Parameter Name="Original_ReleaseDate" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="Name" />
                <asp:Parameter Name="Version" />
                <asp:Parameter Name="ReleaseDate" />
                <asp:Parameter Name="original_Name" />
                <asp:Parameter Name="original_Version" />
                <asp:Parameter Name="original_ReleaseDate" />
                <asp:Parameter Name="original_ProductCode" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="ProductCode" />
                <asp:Parameter Name="Name" />
                <asp:Parameter Name="Version" />
                <asp:Parameter Name="ReleaseDate" />
            </InsertParameters>
        </asp:SqlDataSource>
        <br />
        To add a new product, enter the product information and clck Add product.<br />
        <asp:Label ID="lblError" runat="server" ForeColor="Red"></asp:Label>
        <br />
        <table class="style1">
            <tr>
                <td class="style2">
                    Product code:</td>
                <td class="style3">
                    <asp:TextBox ID="txtProductCode" runat="server"></asp:TextBox>
                </td>
                <td>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                        ControlToValidate="txtProductCode" 
                        ErrorMessage="Product code is a required field"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    Name:</td>
                <td class="style3">
                    <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
                </td>
                <td>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                        ControlToValidate="txtName" ErrorMessage="Name is a required field"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    Version:</td>
                <td class="style3">
                    <asp:TextBox ID="txtVersion" runat="server"></asp:TextBox>
                </td>
                <td>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                        ControlToValidate="txtVersion" ErrorMessage="Version is a required field"></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td class="style2">
                    Release date:</td>
                <td class="style3">
                    <asp:TextBox ID="txtReleaseDate" runat="server"></asp:TextBox>
                </td>
                <td>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
                        ControlToValidate="txtReleaseDate" 
                        ErrorMessage="Release date is a required field"></asp:RequiredFieldValidator>
                </td>
            </tr>
        </table>
        <br />
        <asp:Button ID="btnAdd" runat="server" Text="Add Product" Width="130px" 
        onclick="btnAdd_Click" />
    </p>
</asp:Content>
4

3 回答 3

0

你必须给予GridView1.DataSource = SqlDataSource1; ,然后 GridView1.DataBind();Page_Load事件中

您要么必须将 AutoGenerateColumns 设置为 true,要么将列提供为 Bound - 或要显示的 TemplateFields。

ORAutoGenerateColumns="True"将显示数据并生成列。您可能需要自定义显示的内容。为此,请切换到设计视图,然后您可以编辑 gridview 模板。

于 2013-02-04T09:55:34.357 回答
0

由于您设置 AutoGenerateColumns = "False",因此您需要添加类似的列

<Columns>
 <asp:BoundField ....
   .
   .
   .
   .
 </Columns>

否则你必须设置 AutoGenerateColumns = "True"

另一件事:您忘记将 DataSourceID 分配给您的 GridView。

您应该在 GridView 标记内具有以下属性:

DataSourceID = "SqlDataSource1"

我希望它对你有帮助。

于 2013-02-04T14:40:39.827 回答
0

一开始做AutoGenerateColumns = true

然后,

protected void Page_Load(object sender, EventArgs e)
{ 
    GridView1.DataBind();
}
于 2013-02-04T09:44:28.233 回答