我有一个与我的任务相关的问题,我正在使用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>
答案 0 :(得分:0)
首先制作AutoGenerateColumns = true
然后,
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataBind();
}
答案 1 :(得分:0)
你必须给GridView1.DataSource = SqlDataSource1;
然后在GridView1.DataBind();
事件中Page_Load
您必须将AutoGenerateColumns设置为true或将列提供为您要显示的Bound - 或TemplateFields。
OR AutoGenerateColumns="True"
将显示数据并生成列。您可能需要自定义显示的内容。为此,请切换到设计视图,然后您可以编辑gridview模板。
答案 2 :(得分:0)
由于您设置了AutoGenerateColumns =“False”,因此您需要添加
等列<Columns>
<asp:BoundField ....
.
.
.
.
</Columns>
否则你必须设置AutoGenerateColumns =“True”
另一件事:您忘了将DataSourceID分配给GridView。
您应该在GridView标记内具有以下属性:
DataSourceID = "SqlDataSource1"
我希望它可以帮到你。