DataGrid.填充Null数据的项

本文关键字:数据 Null 填充 DataGrid | 更新日期: 2023-09-27 18:09:58

我正在尝试填充一个asp。DataGrid,包含来自DB2数据库的数据。我得到的问题是数据返回为空。奇怪的是,记录本身(似乎)是从数据库加载的,因为当我在调试时逐步执行代码时,DataGrid.Items.Count =数据库本身中的记录数量。

此外,在进行故障排除时,我添加了一个asp。最初隐藏的标签,以显示在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本身的翻译中丢失了一些东西。

任何想法?

DataGrid.填充Null数据的项

我可以看到两个问题(可能更多):

  1. 在页面执行期间实例化DataGrid控件,但忘记将其添加到页面的控件集合中。
  2. 您遗漏了Datasource属性和DataBind()方法。

在设计环境中,在页面(.aspx)上添加一个"PlaceHolder"控件(例如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();
    }
}