我覺得這個問題已經被問過很多次了(我自我問過一次),但有一個新問題,我面臨着。我創建了一個按鈕數組按鈕另一個按鈕在我的應用程序。創建按鈕的數量將取決於我從數據庫中獲得的值和我從數據庫中獲得的值取決於會話值,我通過查詢。我的代碼如下所示。按鈕點擊事件陣列的按鈕不發射
代碼:
protected void attributes()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString());
SqlCommand cmd = new SqlCommand("select attributesequenceNumber as attsno,ProductCode as pcode, P26 as '" + 26 + "',P28 as '" + 28 + "',P30 as '" + 30 + "',P32 as '" + 32 + "',P34 as '"+34+"',P36 as '"+36+"',P38 as '"+38+"',P40 as '"+40+"',P42 as '"+42+"',SHXS as XS,SHS as S,SHM as M,SHL as L,SHXL as XL,SHXXL as XXL from tblattribute where ProductCode='" + Session["ImgProdCode"] + "'", con);
//SqlCommand cmd = new SqlCommand("select Col.value('local-name(.)', 'varchar(Max)') as ColName from (select * from tblattribute where ProductCode ='"+Session["ImgProdCode"]+"' for xml path(''), type) as T(XMLCol) cross apply T.XMLCol.nodes('*') as n(Col) where Col.value('.', 'varchar(1)') = 1 " , con);
try
{
con.Open();
cmd.ExecuteNonQuery();
DataTable dtble = new DataTable();
SqlDataAdapter dap = new SqlDataAdapter(cmd);
dap.Fill(dtble);
if (dtble.Rows.Count > 0)
{
result = dtble.Columns.Cast<DataColumn>()
.Where(c => c.ColumnName != "pcode" && c.ColumnName != "attsno")
.Where(c => dtble.Rows[0][c].ToString() == "1")
.Select(c => c.ColumnName)
.ToList();
res = result.Count;
lbl = new Button[res];
for(i=0; i<result.Count; i++)
{
lbl[i] = new Button();
lbl[i].Text = result[i];
lbl[i].ID = "btn" + i.ToString();
lbl[i].Width = 30;
lbl[i].Click+=new EventHandler(lbl_click);
lbl[i].CssClass = "label";
div1.Controls.Add(lbl[i]);
}
}
}
catch
{
throw;
}
finally
{
if (con != null)
{
con.Close();
}
}
}
protected void lbl_click(object sender, EventArgs e)
{
Button lbl = sender as Button;
lbl.CssClass = "label1";
}
上述方法屬性s()將在按鈕點擊時被調用,並且會話值也將在buttonclick上生成。在研究中我發現動態按鈕的創建應該在page_init事件中完成,但我無法在這裏完成。請幫助解決這個問題..
你能發佈lbl_click()....嗎? – Sunil
@Sunil我已經更新了我的問題。請檢查它。 – coder