本人刚开始学习用VC#.net开发Web项目,这些天用Gridview做数据库开发时遇到一个问题。用GridView连接数据库后,第一次加载数据时,GridView不能正常显示出来,第二次加载数据才能正常显示,而且显示的数据也是正确的。这个问题在想了两三天了,在网上也没找到答案。希望哪位大侠给些指点,不胜感激!!!
我的代码如下:
protected void btnHouse_Click(object sender, EventArgs e)
{
string strConnection = "Persist Security Info=false;Integrated Security=true;Initial Catalog=House;server=(local)";
SqlConnection sqlConn = new SqlConnection(strConnection);
sqlConn.Open();
//“id”是从上一个页面通过Transer()方法传递的参数,string类型变量
string strSelect = "select UserID,UserName,Sex from [UserData] where UserID='" + id + "'";
SqlDataAdapter sqlDAdapter = new SqlDataAdapter(strSelect, sqlConn);
DataSet dSet = new DataSet();
sqlDAdapter.Fill(dSet,"tblUserData");
sqlConn.Close();
GridView1.Visible = true;
GridView1.DataSource = dSet.Tables["tblUserData"];
GridView1.DataBind(); BoundField bdf1 = new BoundField();
bdf1.DataField = "UserID";
bdf1.HeaderText = "User ID";
GridView1.Columns.Add(bdf1);
BoundField bdf2 = new BoundField();
bdf2.DataField = "UserName";
bdf2.HeaderText = "User Name";
GridView1.Columns.Add(bdf2);
BoundField bdf3 = new BoundField();
bdf3.DataField = "Sex";
bdf3.HeaderText = "Sex";
GridView1.Columns.Add(bdf3);
}
我的代码如下:
protected void btnHouse_Click(object sender, EventArgs e)
{
string strConnection = "Persist Security Info=false;Integrated Security=true;Initial Catalog=House;server=(local)";
SqlConnection sqlConn = new SqlConnection(strConnection);
sqlConn.Open();
//“id”是从上一个页面通过Transer()方法传递的参数,string类型变量
string strSelect = "select UserID,UserName,Sex from [UserData] where UserID='" + id + "'";
SqlDataAdapter sqlDAdapter = new SqlDataAdapter(strSelect, sqlConn);
DataSet dSet = new DataSet();
sqlDAdapter.Fill(dSet,"tblUserData");
sqlConn.Close();
GridView1.Visible = true;
GridView1.DataSource = dSet.Tables["tblUserData"];
GridView1.DataBind(); BoundField bdf1 = new BoundField();
bdf1.DataField = "UserID";
bdf1.HeaderText = "User ID";
GridView1.Columns.Add(bdf1);
BoundField bdf2 = new BoundField();
bdf2.DataField = "UserName";
bdf2.HeaderText = "User Name";
GridView1.Columns.Add(bdf2);
BoundField bdf3 = new BoundField();
bdf3.DataField = "Sex";
bdf3.HeaderText = "Sex";
GridView1.Columns.Add(bdf3);
}
BoundField bdf1 = new BoundField();
bdf1.DataField = "UserID";
bdf1.HeaderText = "User ID";
GridView1.Columns.Add(bdf1);
BoundField bdf2 = new BoundField();
bdf2.DataField = "UserName";
bdf2.HeaderText = "User Name";
GridView1.Columns.Add(bdf2);
BoundField bdf3 = new BoundField();
bdf3.DataField = "Sex";
bdf3.HeaderText = "Sex";
GridView1.Columns.Add(bdf3);GridView1.DataSource = dSet.Tables["tblUserData"];
GridView1.DataBind();
下面的代码能够解决第一次不能显示数据的问题。 但是自动增加列的问题,还需要你自己处理了嘿嘿嘿嘿,嘿嘿嘿嘿,嘿嘿嘿嘿,嘿嘿嘿嘿,嘿嘿嘿嘿GridView1.DataSource = dSet.Tables["tblUserData"];BoundField bdf1 = new BoundField();
bdf1.DataField = "UserID";
bdf1.HeaderText = "User ID";
GridView1.Columns.Add(bdf1);
BoundField bdf2 = new BoundField();
bdf2.DataField = "UserName";
bdf2.HeaderText = "User Name";
GridView1.Columns.Add(bdf2);
BoundField bdf3 = new BoundField();
bdf3.DataField = "Sex";
bdf3.HeaderText = "Sex";
GridView1.Columns.Add(bdf3);GridView1.DataBind();
其实我原意并不是想动态添加列,只是用下面的代码无法自动显示DataGridView和数据时才想到用动态添加列的方法,代码如下:
protected void btnHouse_Click(object sender, EventArgs e)
{
string strConnection = "Persist Security Info=false;Integrated Security=true;Initial Catalog=House;server=(local)";
SqlConnection sqlConn = new SqlConnection(strConnection);
sqlConn.Open();
//“id”是从上一个页面通过Transer()方法传递的参数,string类型变量
string strSelect = "select UserID,UserName,Sex from [UserData] where UserID='" + id + "'";
SqlDataAdapter sqlDAdapter = new SqlDataAdapter(strSelect, sqlConn);
DataSet dSet = new DataSet();
sqlDAdapter.Fill(dSet,"tblUserData");
sqlConn.Close();
GridView1.Visible = true;
GridView1.DataSource = dSet.Tables["tblUserData"];
GridView1.DataBind();
}
而且通过监视窗口发现有几次GridView1.DataSource的值为Null,添加数据源没有成功,但有时又没有问题。希望大家能给我点提示,已经困惑几天了!