C# 在图像按钮下动态添加文本
我正在从数据库加载名称和图像,并将它们动态添加到面板控件中。我想要的是一个图像和一个显示在该图像下的名称。但名称标签并不完全位于图像下方。是否有方法添加相对于图像按钮的标签 这是我从数据库加载图像和名称的代码:C# 在图像按钮下动态添加文本,c#,asp.net,C#,Asp.net,我正在从数据库加载名称和图像,并将它们动态添加到面板控件中。我想要的是一个图像和一个显示在该图像下的名称。但名称标签并不完全位于图像下方。是否有方法添加相对于图像按钮的标签 这是我从数据库加载图像和名称的代码: string query1 = "SELECT photo,name FROM Artist"; using(var conn = new SqlConnection("connectionStringHere")) using(SqlCommand cmd = new SqlComma
string query1 = "SELECT photo,name FROM Artist";
using(var conn = new SqlConnection("connectionStringHere"))
using(SqlCommand cmd = new SqlCommand(query1, conn))
{
conn.Open();
using(SqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
byte[] bytes = (byte[])reader.GetValue(0);
string strBase64 = Convert.ToBase64String(bytes);
ImageButton imgButton = new ImageButton();
imgButton.ImageUrl = "data:Image/png;base64," + strBase64;
imgButton.Width = Unit.Pixel(200);
imgButton.Height = Unit.Pixel(200);
imgButton.Style.Add("padding", "5px");
imgButton.Click += new ImageClickEventHandler(imgButton_Click);
Panel1.Controls.Add(imgButton);
Label lbl = new Label();
lbl.Text = reader.GetString(1);
lbl.CssClass = "imageLable"; // style it in your .css file
Panel1.Controls.Add(lbl);
}
}
}
这就是我看到的:
您只需在图像按钮下添加标签:
string query1=“选择照片,艺术家姓名”;
SqlCommand cmd=新的SqlCommand(query1,conn);
conn.Open();
SqlDataReader=cmd.ExecuteReader();
while(reader.Read())
{
字节[]字节=(字节[])读取器.GetValue(0);
string strBase64=Convert.TOBASE64字符串(字节);
ImageButton imgButton=新建ImageButton();
imgButton.ImageUrl=“数据:Image/png;base64,”+strBase64;
imgButton.Width=单位像素(200);
imgButton.Height=单位像素(200);
imgButton.Style.Add(“padding”,“5px”);
imgButton.Click+=新建ImageClickEventHandler(imgButton\u Click);
Panel1.控件.添加(imgButton);
标签lbl=新标签();
lbl.Text=reader.GetValue(1);
//TODO:在此处添加样式和大小参数
面板1.控件。添加(lbl);
}
您必须向该标签添加样式,因为它不是“图像”按钮的一部分,所以它不会是链接。如果您希望它是可点击的,您应该将
ImageButton
更改为链接
,然后在链接
控件内添加图像
和标签。您只需要在图像按钮下添加标签:
string query1=“选择照片,艺术家姓名”;
SqlCommand cmd=新的SqlCommand(query1,conn);
conn.Open();
SqlDataReader=cmd.ExecuteReader();
while(reader.Read())
{
字节[]字节=(字节[])读取器.GetValue(0);
string strBase64=Convert.TOBASE64字符串(字节);
ImageButton imgButton=新建ImageButton();
imgButton.ImageUrl=“数据:Image/png;base64,”+strBase64;
imgButton.Width=单位像素(200);
imgButton.Height=单位像素(200);
imgButton.Style.Add(“padding”,“5px”);
imgButton.Click+=新建ImageClickEventHandler(imgButton\u Click);
Panel1.控件.添加(imgButton);
标签lbl=新标签();
lbl.Text=reader.GetValue(1);
//TODO:在此处添加样式和大小参数
面板1.控件。添加(lbl);
}
您必须向该标签添加样式,因为它不是“图像”按钮的一部分,所以它不会是链接。如果希望它是可单击的,则应将ImageButton
更改为链接
,然后在链接
控件内添加图像
和标签。ADO.NET代码中存在一些错误做法
始终使用块包装实现IDisposable的所有内容
作用域连接到使用它们的方法。Sql Server将处理连接池,因此请使用并处置它,而不是重用它
不过,解决问题的办法是在面板上添加一个新标签,然后根据需要设置样式
string query1 = "SELECT photo,name FROM Artist";
using(var conn = new SqlConnection("connectionStringHere"))
using(SqlCommand cmd = new SqlCommand(query1, conn))
{
conn.Open();
using(SqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
byte[] bytes = (byte[])reader.GetValue(0);
string strBase64 = Convert.ToBase64String(bytes);
ImageButton imgButton = new ImageButton();
imgButton.ImageUrl = "data:Image/png;base64," + strBase64;
imgButton.Width = Unit.Pixel(200);
imgButton.Height = Unit.Pixel(200);
imgButton.Style.Add("padding", "5px");
imgButton.Click += new ImageClickEventHandler(imgButton_Click);
Panel1.Controls.Add(imgButton);
Label lbl = new Label();
lbl.Text = reader.GetString(1); // use GetString, not GetValue here
lbl.CssClass = "imageLable"; // style it in your .css file
Panel1.Controls.Add(lbl);
}
}
}
ADO.NET代码中存在一些错误做法
始终使用块包装实现IDisposable的所有内容
作用域连接到使用它们的方法。Sql Server将处理连接池,因此请使用并处置它,而不是重用它
不过,解决问题的办法是在面板上添加一个新标签,然后根据需要设置样式
string query1 = "SELECT photo,name FROM Artist";
using(var conn = new SqlConnection("connectionStringHere"))
using(SqlCommand cmd = new SqlCommand(query1, conn))
{
conn.Open();
using(SqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
byte[] bytes = (byte[])reader.GetValue(0);
string strBase64 = Convert.ToBase64String(bytes);
ImageButton imgButton = new ImageButton();
imgButton.ImageUrl = "data:Image/png;base64," + strBase64;
imgButton.Width = Unit.Pixel(200);
imgButton.Height = Unit.Pixel(200);
imgButton.Style.Add("padding", "5px");
imgButton.Click += new ImageClickEventHandler(imgButton_Click);
Panel1.Controls.Add(imgButton);
Label lbl = new Label();
lbl.Text = reader.GetString(1); // use GetString, not GetValue here
lbl.CssClass = "imageLable"; // style it in your .css file
Panel1.Controls.Add(lbl);
}
}
}
您是否尝试过创建标签字段并动态设置其文本值?您是否尝试过创建新标签,将其文本设置为名称值并将其添加到imagebutton之后的面板中?是否尝试过创建标签字段并动态设置其文本值?您是否尝试过创建新标签,将其文本设置为“名称”值,并将其添加到imagebutton之后的面板中?问题是我正在一行中加载多个图像。因此,标签没有准确显示在图像按钮下。是否有方法相对于图像按钮调整标签?我将更新问题并添加一个屏幕截图以使其更清晰。@EL323-这取决于HTML。您可以将ImageButton和标签包装在div
中,然后编写一个小CSS,将标签放在ImageButton的下方和中心。这取决于你想要它的结构,但是有很多方法可以做到。谢谢我试试看。我对CSS不是很满意。@EL323-您希望图像堆叠还是相邻,标签在下面?图像相邻,标签在下面。问题是我在一行中加载多个图像。因此,标签没有准确显示在图像按钮下。是否有方法相对于图像按钮调整标签?我将更新问题并添加一个屏幕截图以使其更清晰。@EL323-这取决于HTML。您可以将ImageButton和标签包装在div
中,然后编写一个小CSS,将标签放在ImageButton的下方和中心。这取决于你想要它的结构,但是有很多方法可以做到。谢谢我试试看。我对CSS不是很满意。@EL323-你想让图像堆叠起来,还是让标签在下面的图像彼此相邻?让标签在下面的图像彼此相邻。