Reputation: 67
ok so im sure the problem is in the code behind, something is not right..
DAL is a class that gets data from the db, and it works, for sure..
code behind:
using DALLib;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FinalProject
{
public partial class בתים : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MaxRooms.Attributes.Add("onChange", "return OnSelectedIndexChange()");
MinRooms.Attributes.Add("onChange", "return OnSelectedIndexChange()");
Cities.DataSource = (DataTable)Application["CitiesTable"];
Cities.DataTextField = "Name";
Cities.DataBind();
}
DAL findHouses = new DAL(
"SELECT * FROM Houses WHERE City='" + Cities.Text + "' AND Rooms BETWEEN '" + MinRooms.Text + "' AND '" + MaxRooms.Text + "'",
ConfigurationManager.AppSettings["ConnectionString"],
"Houses"
);
Application.Lock();
Application["SearchResultsTable"] = findHouses.GetTable();
Application.UnLock();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SearchResults.PageIndex = e.NewPageIndex;
BindHousesToGrid();
}
private void BindHousesToGrid()
{
SearchResults.DataSource = (DataTable)Application["SearchResultsTable"];
SearchResults.DataBind();
}
}
}
the form:
<div>
<asp:GridView ID="SearchResults" runat="server" CellPadding="4" GridLines="None" AutoGenerateColumns="False" ForeColor="#333333" AllowPaging="True">
<AlternatingRowStyle BackColor="White"></AlternatingRowStyle>
<Columns>
<asp:BoundField DataField="Id" HeaderText="מספר נכס" />
<asp:BoundField DataField="City" HeaderText="עיר" />
<asp:BoundField DataField="Street" HeaderText="רחוב" />
<asp:BoundField DataField="Rooms" HeaderText="חדרים" />
<asp:BoundField DataField="size" HeaderText="גודל" />
<asp:BoundField DataField="price" HeaderText="מחיר" />
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White"></FooterStyle>
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White"></HeaderStyle>
<PagerStyle HorizontalAlign="Center" BackColor="#FFCC66" ForeColor="#333333"></PagerStyle>
<RowStyle BackColor="#FFFBD6" ForeColor="#333333"></RowStyle>
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy"></SelectedRowStyle>
<SortedAscendingCellStyle BackColor="#FDF5AC"></SortedAscendingCellStyle>
<SortedAscendingHeaderStyle BackColor="#4D0000"></SortedAscendingHeaderStyle>
<SortedDescendingCellStyle BackColor="#FCF6C0"></SortedDescendingCellStyle>
<SortedDescendingHeaderStyle BackColor="#820000"></SortedDescendingHeaderStyle>
</asp:GridView>
</div>
the button on my form doesnt do anything yet, but first i want the gridview to show the initial values, means the whole db table.. what am i doing wrong?
Upvotes: 0
Views: 7141
Reputation: 222
Grid is not bound to any data source. Add to Page_Load:
BindHousesToGrid();
I'd also use this code inside if(!IsPostBack) { }
block, so that you don't retrieve the same data on every postback.
Upvotes: 2