DataGrid.Items заполнены нулевыми данными - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь заполнить asp.DataGrid данными из базы данных DB2.Проблема, которую я получаю, состоит в том, что данные возвращаются нулевые.Странно то, что сами записи (кажется) загружаются из базы данных, поскольку, когда я выполняю код во время отладки, DataGrid.Items.Count = количество записей, которые у меня есть в самой базе данных.

Кроме того, при устранении неполадок я добавил ярлык asp.Label, который изначально скрыт для отображения количества записей, найденных в самой DataGrid, и каждый раз, когда он отображает правильное количество записей.

Вот мой код:

protected void Page_Load(object sender, EventArgs e)
{
    dta_grd = new DataGrid();
    dta_grd = Ex_DLL.GetData("select * from tstint/m02");
    Lbl_Dsply.Visible = true;
    if (Supp_Data.Items.Count == 0)
    {
        Lbl_Dsply.Text = "No Records Found!";
    }
    else
    {
        Lbl_Dsply.Text += dta_grd.Items.Count.ToString();
    }
}

Ex_DLL - это просто имя библиотеки, которая выполняет все соединения с самой базой данных.

Код для Ex_DLL.GetData ():

public static DataGrid GetData(string str_sql)
{
    //EX_Global.DB2_Conn("DEV") is just an internal connection function that houses
    //the connection settings.      
    iDB2Connection db2_conn = EX_Global.DB2_Conn("DEV");
    iDB2Command db2_cmd = null;
    iDB2DataAdapter db2_adpt = null;
    DataSet dta_ds = new DataSet();
    DataGrid ret_val = new DataGrid();
    try
    {
        if (db2_conn.State != System.Data.ConnectionState.Open) { db2_conn.Open(); }
        db2_cmd = new iDB2Command(str_sql, db2_conn);
        db2_adpt = new iDB2DataAdapter(db2_cmd);
        db2_adpt.Fill(dta_ds);
        ret_val.DataSource = dta_ds;
        ret_val.DataBind();
        db2_conn.Close();
    }
    catch (Exception) { }
    return ret_val; 
}

Теперь, когда я читаю их по отдельности с помощью idb2DataReader, это фактически чтение из базы данных, но в переводе с чтения просто что-то теряетсябаза данных для заполнения самой DataGrid.

Есть идеи?

1 Ответ

1 голос
/ 29 сентября 2011

Есть две проблемы (может быть больше), которые я вижу:

  1. Вы создаете экземпляр элемента управления DataGrid во время выполнения страницы, но забыли добавить его в коллекцию элементов управления страницы.
  2. Вы пропустили свойство Datasource и метод DataBind().

В среде разработки добавьте элемент управления «PlaceHolder» на страницу (.aspx) (скажем, PlaceHolder1)

protected void Page_Load(object sender, EventArgs e)
{
    dta_grd = new DataGrid();
    dta_grd.DataSource = Ex_DLL.GetData("select * from tstint/m02");
    dta_grd.DataBind(); // this method populates the DataGrid from assigned datasource
    PlaceHolder1.Controls.Add(dta_grd);

    Lbl_Dsply.Visible = true;
    if (Supp_Data.Items.Count == 0)
    {
        Lbl_Dsply.Text = "No Records Found!";
    }
    else
    {
        Lbl_Dsply.Text += dta_grd.Items.Count.ToString();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...