0
例如,我有一个测验记录。我想要显示所有测验以及接受测验的学生。如果测验的总数是20,那么列表视图会动态地向列表视图添加另一列。我怎样才能做到这一点?另外,我希望列表视图的第一列显示学生的姓名。如何动态设置列表视图中的列数?
这是我如何手动将项目添加到列。
listView1.Items.Clear();
conek.OPEN("Select * from thesisdb.teachers where username='"+txts+"'");
while(conek.reader.Read()){
ListViewItem ni = new ListViewItem(conek.reader[0].ToString());
ni.SubItems.Add(conek.reader[1].ToString());
ni.SubItems.Add(conek.reader[2].ToString());
ni.SubItems.Add(conek.reader[3].ToString());
ni.SubItems.Add(conek.reader[4].ToString());
ni.SubItems.Add(conek.reader[5].ToString());
ni.SubItems.Add(conek.reader[6].ToString());
ni.SubItems.Add(conek.reader[7].ToString());
ni.SubItems.Add(conek.reader[8].ToString());
ni.SubItems.Add(conek.reader[9].ToString());
listView1.Items.AddRange(new ListViewItem[] { ni });
}
conek.CLOSE();
我尝试使用for循环的读者数量的项目,但它似乎并没有工作。
这个类是由我们的教师给出的,这是我们自从我们开始使用c#以来一直使用的。
namespace spms.classes
{
public class clsOpenCon
{
public static string connectionAddress = "uid=root; database=thesisdb;";
public static MySqlConnection CN = new MySqlConnection(classes.clsOpenCon.connectionAddress);
public MySqlCommand Com = new MySqlCommand();
public MySqlDataReader reader;
public void nonQuery(string cmdText)
{
Com.Connection = CN;
CN.Open();
Com.CommandText = cmdText;
Com.ExecuteNonQuery();
Com.Dispose();
CN.Close();
}
public void OPEN(string cmdtext)
{
Com.Connection = classes.clsOpenCon.CN;
classes.clsOpenCon.CN.Open();
Com.CommandText = cmdtext;
reader = Com.ExecuteReader();
}
public void CLOSE()
{
reader.Close();
Com.Dispose();
classes.clsOpenCon.CN.Close();
}
}
}
我还是很新的c#和我以前没有使用过datagridview。添加子项和项目范围的逻辑与列表视图相同吗? –
datagridview将为您完成所有工作 - 您所做的只是将它传递给DataTable--我已经放入了我的答案中的那一行确实是您所需要的!它会得到列名并为你添加它们。您可能需要在GUI设计器中设置一些格式以使其看起来像您想要的 - 您可以使它们看起来很像列表视图。 如果你想手动做到最好坚持用listview可能 - datagridview是最好的自动方式! – noelicus
所以我只需要创建一个数据表,我应该写下我的sql语句,然后使用datagridview的数据表来显示数据? –