请帮我从不同标签的数据库中显示选定的列数据。
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
MySqlCommand countcmd = new MySqlCommand("select count(*) from category", con);
int temp = Convert.ToInt32(countcmd.ExecuteScalar().ToString());
MySqlCommand inscmd = new MySqlCommand("select catname from category where cid > 0", con);
string temp1 = inscmd.ExecuteScalar().ToString();
MySqlDataReader dr = inscmd.ExecuteReader();
dr.Read();
for (int i = 0; i < temp; i++){
("label" & i).text = dr[i].ToString();
}
}
答案 0 :(得分:0)
使用FindControl方法页面 http://msdn.microsoft.com/en-us/library/31hxzsdw.aspx
答案 1 :(得分:0)
启动时完全错误,你无法使用(string).Text访问控件。
下一个问题是如何创建这些标签,如果它们是在设计时预先创建的,你怎么知道你有足够的,你打算用额外的那些做什么?
PS你应该为每个查询敲掉一个新的连接,并让连接池处理缓存而不是传递实例化的一轮,除非在极少数情况下。
你也应该处理你的查询对象,使用这样做是有好处的,而不是在开始耗尽内存时依靠GC来整理。
此外,您的查询会返回包含一列的行,因此您需要一个while循环。
我要做的第一件事就是从查询中返回IEnumerable<String>
。
e.g。
之类的东西private IEnumerable<String> GetCategoryNames(String argConnectionString)
{
using(SqlConnection con = new SqlConnection(argConnnectionString))
{
con.Open()
using(SqlCommand com = new SqlCommand("Select CatName From Category Where cid > 0", con))
{
using(SqlDataReader reader = com.ExecuteReader())
{
while (reader.Read())
{
yield reader[0].ToString();
}
}
}
}
}
然后我会点击一些可以用
之类滚动和实例化标签的东西private void AddNewLabels(argConnectionString)
{
int count = 0;
Point startPoint = new Point(0,0) // assuming this is where you want the first label to be in the scroll box
labelSpacing = 20; // how far apart vertically should your column of labels be.
foreach(String labelText in GetCatgoryNames(argConectionString))
{
Label label = new Label();
label.parent = myScrollBox;
label.Left = StartPoint.X;
label.Top = Count * LabelSpacing + StartPoint.Y;
label.Name = String.Concat'MyDynamicLabel'
// etc
label.Text = labelText;
count++;
}
}
protected void Page_Load(object sender, EventArgs e)
{
DestroyPreviousLabels();
AddNewLabels(conn.ConnectionString);
}
DestroyNewLabels将使用名称以“MyDynamicLabel”开头的FindControls FindControl
。
或者你可以变得更聪明一些,只能摧毁你不需要的东西,只有你创造更多。如果你想这样做,考虑一个List<Label>
并添加和删除,那么你将有一个循环计数,你不必继续找到它们,因为这不是明智的表现。
一旦你开始工作,一些想法和一些重构机会。
注意,这不是我的头脑,所以可能是愚蠢的或两个。