我尝试将数据库数据绑定到c#和asp.net中的gridview。但我无法在gridview中看到数据。行被添加到gridview但它们是空的。当我在SQLServer中运行该查询时,它给出了正确的结果。我没有添加或更改任何代码到asp部分。我应该吗?我找不到问题所在:(请帮忙..
myConnection = WebConfigurationManager.ConnectionStrings["KutuphaneConnectionString"].ConnectionString;
connect = new SqlConnection(myConnection);
command = new SqlCommand();
connect.Open();
command.Connection = connect;
string komut = "SELECT K.ad,K.yazar,K.baskiNo,O.sonTeslimTarihi FROM OduncIslemleri O,Kitap K WHERE O.kullaniciId=" + Session["id"] + " AND O.kitapId = K.id;";
try
{
SqlCommand sqlCommand = new SqlCommand();
sqlCommand = connect.CreateCommand();
sqlCommand.CommandText = komut;
SqlDataAdapter sda = new SqlDataAdapter(sqlCommand.CommandText, connect);
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
//Create a DataTable to hold the query results.
DataTable dTable = new DataTable();
//Fill the DataTable.
sda.Fill(dTable);
GridView1.DataSource = dTable;
GridView1.DataBind();
}
catch (SqlException)
{
//Console.WriteLine(e.StackTrace);
}
reader.Close();
connect.Close();
答案 0 :(得分:4)
这是正确答案:
myConnection = WebConfigurationManager.ConnectionStrings["KutuphaneConnectionString"].ConnectionString;
connect = new SqlConnection(myConnection);
string sorgu = "select K.ad,K.yazar,K.baskiNo,O.sonTeslimTarihi from Kitap K, OduncIslemleri O where O.kitapId = K.id and O.kullaniciId = "+ Session["id"];
SqlDataAdapter sadp = new SqlDataAdapter(sorgu, connect);
DataSet ds = new DataSet();
sadp.Fill(ds);
this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind();
connect.Close();
我还在Gridview中使用了模板字段。 autogeneratedFields也应该是真的。我希望这对有同样问题的人有所帮助
答案 1 :(得分:0)
注意在绑定之后触发的另一个可能正在清除行的事件
答案 2 :(得分:0)
尝试创建一个DataSet,然后使用Fill填充它。我从未见过在DataTable上使用Fill - 并且在MSDN上找不到特定的重载。但我怀疑,这样的重载不会修改DataTable的现有模式(因为它只是在你的例子中使用之前才创建,意味着它没有列)。
答案 3 :(得分:0)
我认为您必须使用BindingSource控件,将其DataSource设置为DataTable,然后将GridView的DataSource设置为BindingSource。