[英]How do I dynamically add a label and button to a groupbox?
我正在構建一個程序,該程序將在數據庫中插入/更新/刪除條目。
待辦事項列表上的下一步是根據標簽盒和按鈕在數據庫中找到的條目動態填充標簽盒,但是我不確定如何執行此操作。
我的查詢看起來像"SELECT id, image FROM images WHERE slider = 1";
如果數據庫中所有帶有Slider = 1的條目都在網站上的圖像滑塊中顯示圖像,而Slider = 0則不顯示它。
因此,在程序中,我想顯示圖像的標簽和一個按鈕,以從在設計視圖中設置的組框中的滑塊中移除圖像。 (當您單擊刪除按鈕時,它將更新數據庫,並根據ID將該圖像的列滑塊設置為0)。
例如:
Groupbox
image1 <delete> <--button
image2 <delete> <--button
我忘了提到,當我單擊頂部菜單中的工具欄時,應該會發生填充
例如:
private void imagesToolStripMenuItem_Click(object sender, EventArgs e)
{
Pnl_Media.Visible = true;
Lbl_Welcome_admin.Visible = false;
Lbl_Text_Admin.Visible = false;
//Populate the groupbox here
}
所以我的問題是:如何用上面的代碼塊填充現有的空groupbox?
謝謝你
吉姆
如果我理解正確,那么您想在代碼中創建標簽和按鈕,並在按鈕上附加OnClick
嗎?
你可以這樣做。
如果這不是您想要的,請說明您的意思。
您可以像這樣創建標簽和按鈕之類的對象:
Label lbl = new Label();
lbl.Name = "label1";
lbl.Parent = groupBox1;
lbl.Text = "hello world";
lbl.SetBounds(10, 10, 75, 21);
Button btn = new Button();
btn.Name = "button1";
btn.Parent = groupBox1;
btn.Text = "delete something";
btn.SetBounds(10, 50, 75, 21);
btn.Click += btn_Click;
void btn_Click(object sender, EventArgs e)
{
if (sender is Button)
{
MessageBox.Show("clicked on " + ((Button)sender).Name);
}
}
<script type="text/javascript" language="javascript"> function removeImage(id) { PageMethods.RemoveImage(id, onSucess, onError); } function onSucess(result) { alert(result); document.getElementById("btnClick").click(); } function onError(result) { alert('Something wrong.'); } </script>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DynamicData_JIM._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript" language="javascript"> function removeImage(id) { PageMethods.RemoveImage(id, onSucess, onError); } function onSucess(result) { alert(result); document.getElementById("btnClick").click(); } function onError(result) { alert('Something wrong.'); } </script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager> <div> <asp:Button ID="btnClick" Text="Click" runat="server" OnClick="btnClick_Click" /> <asp:Panel ID="pnldynamic" runat="server"> </asp:Panel> </div> </form> </body> </html>
protected void btnClick_Click(object sender, EventArgs e)
{
try
{
using (DBM.SqlCommandEx sqlCmd = new DBM.SqlCommandEx(String.Format("SELECT [id],[image] FROM images WHERE slider = 1", "", "")))
{
System.Data.DataTable dt = new System.Data.DataTable();
dt = sqlCmd.GetDataTable();
Int32 icount = 0;
pnldynamic.Controls.Clear();
pnldynamic.Controls.Add(new LiteralControl("<table>"));
foreach (System.Data.DataRow dr in dt.Rows)
{
String LabelId = "lbl" + icount.ToString();
String buttonid = dr["id"].ToString();
pnldynamic.Controls.Add(new LiteralControl("<tr><td>"));
pnldynamic.Controls.Add(new LiteralControl("<span>" + dr["image"].ToString() + "</span>"));
pnldynamic.Controls.Add(new LiteralControl("</td><td>"));
pnldynamic.Controls.Add(new LiteralControl("<input type='button' id=" + buttonid + " value='Remove' onclick='removeImage(" + dr["id"].ToString() + ");' />"));
pnldynamic.Controls.Add(new LiteralControl("</td></tr>"));
icount++;
}
pnldynamic.Controls.Add(new LiteralControl("</table>"));
}
}
catch (Exception ex)
{
string err = ex.ToString();
}
}
[WebMethod]
public static string RemoveImage(string id)
{
String msg = "Success";
Int32 iresult = 0;
try
{
iresult = DBM.ExecuteNonQuery("UPDATE images SET slider = 0 WHERE id = " + id + "");
}
catch (Exception ex)
{
string err = ex.ToString();
}
return msg;
}
}
private static string GetConnectionString()
{
return ConfigurationManager.ConnectionStrings["StackOverflow"].ConnectionString;
}
public static string CleanSQL(string data)
{
return data.Replace("'", "''");
}
public static int ExecuteNonQuery(string SQL)
{
using (SqlConnection conn = new SqlConnection(GetConnectionString()))
{
conn.Open();
SqlCommand cmd = new SqlCommand(SQL, conn);
int result = cmd.ExecuteNonQuery();
conn.Close();
return result;
}
}
public static object ExecuteScalar(string SQL)
{
using (SqlConnection conn = new SqlConnection(GetConnectionString()))
{
conn.Open();
SqlCommand cmd = new SqlCommand(SQL, conn);
object result = cmd.ExecuteScalar();
conn.Close();
return result;
}
}
public class SqlCommandEx : IDisposable
{
private SqlConnection conn;
public SqlCommand CommandObject;
//public static System.Collections.Stack inuse = new System.Collections.Stack();
public SqlCommandEx(string SQL)
{
conn = new SqlConnection(GetConnectionString());
conn.Open();
CommandObject = new SqlCommand(SQL, conn);
//inuse.Push(DateTime.Now);
}
public DataTable GetDataTable()
{
SqlDataAdapter da = new SqlDataAdapter(CommandObject);
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
public void AddWithValue(string parameter, object value)
{
CommandObject.Parameters.AddWithValue(parameter, value);
}
public void Dispose()
{
//inuse.Pop();
conn.Close();
}
}
public static DataTable GetDataTable(string SQL)
{
using (SqlConnection conn = new SqlConnection(GetConnectionString()))
{
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(SQL, conn);
DataTable result = new DataTable();
da.Fill(result);
conn.Close();
return result;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.