'GridView is not displaying when I run my program
I had a question related to an assignment of mine where I am using GridView. The GridView is not working when I run my program and I am not able to figure out why this is happening. I have already configured my database and everything is good over there. I would really appreciate some help with this.
Here is my source code:
<%@ 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>
Solution 1:[1]
At first make AutoGenerateColumns = true
Then,
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataBind();
}
Solution 2:[2]
You have to give GridView1.DataSource = SqlDataSource1;
and after that GridView1.DataBind(); in Page_Load event
You either have to set AutoGenerateColumns to true or provide the columns as Bound - or TemplateFields that you want to show.
OR AutoGenerateColumns="True" will show the data and generate the columns. You might need to customise what is being shown though. To do this, switch to the design view and you can edit the gridview template.
Solution 3:[3]
Since you set AutoGenerateColumns = "False", you need to add columns like
<Columns>
<asp:BoundField ....
.
.
.
.
</Columns>
or else you have to set the AutoGenerateColumns = "True"
Another thing: You forgot to assign a DataSourceID to your GridView.
You should have the following properties inside the GridView tag:
DataSourceID = "SqlDataSource1"
I hope it helps you.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Gopesh Sharma |
| Solution 2 | Sachin |
| Solution 3 | Harold Javier |
