小弟做三层架构的一个项目发生如下错误//根据班级名称查询学生信息
public DataSet SearchStudentInfoByClassName(string ClassName)
{
DataSet objDataSet = null;
try
{
objDataSet = new DataSet();
_objConn.Open();
SqlDataAdapter objSqlAda = new SqlDataAdapter("[dbo].[usp_SearchStuInfoByClassName]", _objConn);
objSqlAda.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter spt = new SqlParameter("@ClassName", SqlDbType.VarChar, 50);
spt.Direction = ParameterDirection.Input;
spt.Value = ClassName;
objSqlAda.SelectCommand.Parameters.Add(spt);
objDataSet = new DataSet();
objSqlAda.Fill(objDataSet, "StudentInfo");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
_objConn.Close();
}
return objDataSet;
}//根据班级名称查询学生信息
public DataSet SearchStudentInfoByClassName(string ClassName)
{
StudentService ss = new StudentService();
return ss.SearchStudentInfoByClassName(ClassName);
}
我想在ListView中显示DataSet的值,为什么遍历集合时显示不出来呢? 我的ListView的View属性为Details 我添加了列名,但是一遍历就不显示了,下面是我写的函数 private void ShowStuInfo()
{
StudentManager sm = new StudentManager();
DataSet objDataSet = sm.SearchStudentInfoByClassName("应用电子系1班");
this.lvwStudent.Clear();
foreach (DataRow row in objDataSet.Tables[0].Rows)
{
ListViewItem lstItems = new ListViewItem();
lstItems.SubItems.Clear();
lstItems.SubItems[0].Text = row["姓名"].ToString();
lstItems.SubItems.Add(row["学号"].ToString());
lstItems.SubItems.Add(row["性别"].ToString());
lstItems.SubItems.Add(row["出生年月"].ToString());
lstItems.SubItems.Add(row["班级"].ToString());
lstItems.SubItems.Add(row["备注"].ToString());
lvwStudent.Items.Add(lstItems);
}
} 但是在OnLoad事件中就是不显示了
public DataSet SearchStudentInfoByClassName(string ClassName)
{
DataSet objDataSet = null;
try
{
objDataSet = new DataSet();
_objConn.Open();
SqlDataAdapter objSqlAda = new SqlDataAdapter("[dbo].[usp_SearchStuInfoByClassName]", _objConn);
objSqlAda.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlParameter spt = new SqlParameter("@ClassName", SqlDbType.VarChar, 50);
spt.Direction = ParameterDirection.Input;
spt.Value = ClassName;
objSqlAda.SelectCommand.Parameters.Add(spt);
objDataSet = new DataSet();
objSqlAda.Fill(objDataSet, "StudentInfo");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
_objConn.Close();
}
return objDataSet;
}//根据班级名称查询学生信息
public DataSet SearchStudentInfoByClassName(string ClassName)
{
StudentService ss = new StudentService();
return ss.SearchStudentInfoByClassName(ClassName);
}
我想在ListView中显示DataSet的值,为什么遍历集合时显示不出来呢? 我的ListView的View属性为Details 我添加了列名,但是一遍历就不显示了,下面是我写的函数 private void ShowStuInfo()
{
StudentManager sm = new StudentManager();
DataSet objDataSet = sm.SearchStudentInfoByClassName("应用电子系1班");
this.lvwStudent.Clear();
foreach (DataRow row in objDataSet.Tables[0].Rows)
{
ListViewItem lstItems = new ListViewItem();
lstItems.SubItems.Clear();
lstItems.SubItems[0].Text = row["姓名"].ToString();
lstItems.SubItems.Add(row["学号"].ToString());
lstItems.SubItems.Add(row["性别"].ToString());
lstItems.SubItems.Add(row["出生年月"].ToString());
lstItems.SubItems.Add(row["班级"].ToString());
lstItems.SubItems.Add(row["备注"].ToString());
lvwStudent.Items.Add(lstItems);
}
} 但是在OnLoad事件中就是不显示了
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
listView1.Columns.Clear();
SqlConnection con = new SqlConnection("server=.;database=pubs;user id=sa;password=123");
con.Open();
DataSet dst = new DataSet();
SqlCommand cmd =new SqlCommand ("select title_id,type from titles",con );
SqlDataAdapter dap = new SqlDataAdapter(cmd);
dap.Fill(dst);
con.Close();
this.listView1.Columns.Add("ID编号", 80, HorizontalAlignment.Center);
this.listView1.Columns.Add("类型", 80, HorizontalAlignment.Center);//增加列标题
listView1.View = View.Details;
listView1.GridLines = true;//显示网格线。。
string[] str = new string[2];
foreach (DataRow row in dst.Tables[0].Rows)
{
str[0] = row["title_id"].ToString();
str[1] = row["type"].ToString();
ListViewItem item = new ListViewItem(str, 0);
listView1.Items.Add(item);
}
}
lstItems.SubItems.Clear();
位置放错了吧,不应该放在foreach中。
{
StudentManager sm = new StudentManager();
DataSet objDataSet = sm.SearchStudentInfoByClassName("应用电子系1班");
this.lvwStudent.Clear();
foreach (DataRow row in objDataSet.Tables[0].Rows)
{
ListViewItem lstItems = new ListViewItem();
lstItems.SubItems.Clear();
lstItems.SubItems[0].Text = row["姓名"].ToString();
lstItems.SubItems.Add(row["学号"].ToString());
lstItems.SubItems.Add(row["性别"].ToString());
lstItems.SubItems.Add(row["出生年月"].ToString());
lstItems.SubItems.Add(row["班级"].ToString());
lstItems.SubItems.Add(row["备注"].ToString());
lvwStudent.Items.Add(lstItems);
}
}
改成
private void ShowStuInfo()
{
StudentManager sm = new StudentManager();
DataSet objDataSet = sm.SearchStudentInfoByClassName("应用电子系1班");
this.lvwStudent.Clear();
foreach (DataRow row in objDataSet.Tables[0].Rows)
{
ListViewItem lstItems = new ListViewItem();
lstItems.SubItems.Clear();
lstItems.SubItems.Add(row["姓名"].ToString());
lstItems.SubItems.Add(row["学号"].ToString());
lstItems.SubItems.Add(row["性别"].ToString());
lstItems.SubItems.Add(row["出生年月"].ToString());
lstItems.SubItems.Add(row["班级"].ToString());
lstItems.SubItems.Add(row["备注"].ToString());
lvwStudent.Items.Add(lstItems);
}
}
你试一下