Faran Saleem Ответов: 2

Получить данные из события загрузки страницы и отобразить их в gridview in ASP.NET


Привет,

Я храню некоторые данные в переменной при событии загрузки страницы. И у меня есть gridview на той же странице, которая получает данные из базы данных SQL. Я хочу также добавить еще один столбец в gridview и заполнить его значением переменной из события загрузки страницы.
Есть ли для этого какой-нибудь способ? Я хочу сделать это, потому что я вычисляю что-то, что будет изменено относительно изменения даты, поэтому я хочу извлечь данные из загрузки страницы и заполнить ими gridview.

Что я уже пробовал:

Поискал в google и других форумах, но не смог найти ничего, связанного с этим.

ZurdoDev

Найдите способ динамического добавления столбца в gridview.

2 Ответов

Рейтинг:
2

Vincent Maverick Durano

Элемент управления представлением данных, например GridView может справиться только с одним DataSource в одно время. Поскольку ваши данные поступают из разных источников (база данных и переменная кода), то вам может потребоваться создать пользовательский DataTable это будет содержать всю необходимую информацию из ваших источников. Затем вы можете использовать этот обычай DataTable как окончательный вариант DataSource для вашего GridView.

Вот краткий пример: (PS: никогда не тестировался на этом, но это должно дать вам некоторое представление)

private void BindGrid(DataDaTable source)
{
        //create your final datasource
        DataTable dt = new DataTable();
        DataRow dr;

        //define new sets of columns that you need
        dt.Columns.Add(new System.Data.DataColumn("Column1", typeof(String)));
        dt.Columns.Add(new System.Data.DataColumn("Column2", typeof(String)));
        dt.Columns.Add(new System.Data.DataColumn("Column3", typeof(String)));
 
        //you can add more columns here if needed

        //fill your new DataTable with data from your sources
        int rowCount = source.Rows.Count;
	if ( rowCount > 0){
            for(int i=0; i < rowCount; i++){
            dr = dt.NewRow();
            dr[0] = source.Rows[i]["ColumnName"].ToString();
            dr[1] = source.Rows[i]["ColumnName"].ToString();
	    dr[2] = "Your custom variable value here";
            dt.Rows.Add(dr);
            }
        }
 
	GridView1.DataSource = dt;
        GridView1.DataBind();
}


В качестве альтернативы вы можете просто добавить новый Column к вашему существующему DataTable что-то вроде:
DataColumn newColumn = new DataColumn("ColumnName", typeof(System.String));
newColumn.DefaultValue = "Your variable value";
dt.Columns.Add(newColumn);


Рейтинг:
0

manu_dhobale

Я попробовал ниже

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        string customColumn = string.Empty;
        protected void Page_Load(object sender, EventArgs e)
        {
            customColumn = "INDIA";
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable table = new DataTable();
            table.Columns.Add("Dosage", typeof(int));
            table.Columns.Add("Drug", typeof(string));
            table.Columns.Add("Patient", typeof(string));
            table.Columns.Add("Date", typeof(DateTime));

            // Here we add five DataRows.
            table.Rows.Add(25, "Indocin", "David", DateTime.Now);
            table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
            table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
            table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
            table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);


            //Add new column  in gridview if its not set true for autogenerare columns
            //BoundField test = new BoundField();
            //test.DataField = "Country";
            //test.HeaderText = "Country";
            //GridView1.Columns.Add(test);


            //add  new column for your custom variable to datasource
            table.Columns.Add(new DataColumn("Country"));


            GridView1.DataSource = table;
            GridView1.DataBind();

        }

        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //putting data in column Conditionaly 
                if (Convert.ToDateTime(e.Row.Cells[3].Text)<DateTime.Now)
                {
                    e.Row.Cells[4].Text = customColumn;
                }
            }
        }
    }
}