Mehdi Haghgoo
Mehdi Haghgoo

Reputation: 3474

GridView does not bind with datasource

What is the problem with the following code? The GridView GridView1 does not show up on page at all.

  public void display_range_mark()
    {
        int from = int.Parse(ddl_from_mark.SelectedValue.ToString());
        int to = int.Parse(ddl_to_mark.SelectedIndex.ToString());
        DataTable dt=Data.DoSomthing(string.Format("select ts.Name,ts.FamilyName,ts.Id_student,td.Name,tn.NomreAdad from tblStudent ts,tblDars td,tblNomre tn where tn.NomreAdad>='{0}' AND tn.NomreAdad<='{1}' AND ts.Id=tn.Id_student AND td.Id=tn.Id_dars",from,to));
        //DataTable data = Data.DoSomthing(string.Format("select t.Name,t.Id from tblStd t where t.DateSabt='{0}'", p.GetYear(DateTime.Now)));
        GridView1.DataSource = dt;
        GridView1.HeaderRow.Cells[0].Text = "نام";
        GridView1.HeaderRow.Cells[1].Text = "نام خانوادگی";
        GridView1.HeaderRow.Cells[2].Text = "شماره دانش آموزی";
        GridView1.HeaderRow.Cells[3].Text = "درس";
        GridView1.HeaderRow.Cells[4].Text = "نمره";
        GridView1.DataBind();



    }

I am getting this error:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. The error occurs at this line:

GridView1.HeaderRow.Cells[0].Text = "نام";

By the way, the code for Data.DoSomthing is as folllows (It is located within class Database):

 SqlConnection sc = new SqlConnection(@"Data Source=.;Initial Catalog=School;Integrated Security=True");



public DataTable DoSomthing(string text)
    {
        sc.Open();
        DataTable data = new DataTable();
        try
        {
            SqlCommand command = new SqlCommand();
            command.Connection = sc;
            command.CommandType = CommandType.Text;
            command.CommandText = text;

            SqlDataAdapter sd = new SqlDataAdapter(command);
            sd.Fill(data);
            if (data.Rows.Count == 0)
                data = null;
        }
        catch (Exception ex)
        {
            sc.Close();
            return null;
        }
        finally
        {
            if (sc.State != ConnectionState.Closed)
            {
                sc.Close();
            }
        }
        return data;
    }

Upvotes: 0

Views: 1649

Answers (1)

SomeUser
SomeUser

Reputation: 390

Where is the connection object to connect to the database and fetch values ?

The way to do this:

string query="select ts.Name,ts.FamilyName,ts.Id_student,td.Name,tn.NomreAdad from     tblStudent ts,tblDars     td,tblNomre tn where tn.NomreAdad>=@from AND tn.NomreAdad<=@to AND ts.Id=tn.Id_student AND td.Id=tn.Id_dars";

//Create Sqlconnection object
using(SqlConnection con = new SqlConnection(connectionstring))
{
//open the connection
con.Open();
SqlDataAdapter sda = new SqlDataAdapter(query, con);
//To avoid sql injection using parameters
sda.Paramaters.AddWithValue("@from",from);
sda.Paramaters.AddWithValue("@to",to);
DataTable dt = new DataTable();
sda.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}

Upvotes: 2

Related Questions