我正在尝试用来自DB2数据库的数据填充asp.DataGrid。我得到的问题是数据返回null。奇怪的是,记录本身(似乎)从数据库加载,就像我在调试时单步执行代码一样,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本身的翻译中只有一些东西丢失了。
有什么想法吗?
答案 0 :(得分:1)
我可以看到两个问题(可能更多):
DataGrid
控件,但忘记将其添加到页面的Controls集合中。Datasource
属性和DataBind()
方法。在设计环境中,在页面上添加“PlaceHolder”控件(.aspx)(Say 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();
}
}