事情是這樣子的:
我需要在datalist中插入一個(gè)普通按鈕,實(shí)現(xiàn)對item的操作,于是,我就編輯項(xiàng)模版 -- 插入按鈕,設(shè)置該按鈕的commandname為button2,然后結(jié)束編輯項(xiàng)模版,選中該datalist,在屬性對話框內(nèi)按了那個(gè)黃色的小閃電標(biāo)志,雙擊“itemcommand”,在事件中寫:
if(e.commandname == "button2")
{
label labelx = (label)e.item.findcontrol("label1");
string strin = "insert into orderlog (nusername,nmoname) values ('"+username+"','"+labelx.text+"')";
string reu = sc.orderalready(username,labelx.text);
if(reu == "0")
{
sc.ins(strin);
page.registerstartupscript("","<script>alert('您已經(jīng)成功定制了該內(nèi)容,您可以返回到控制臺(tái)頁面點(diǎn)擊“使用模塊”直接使用,也可以在定制模版時(shí)添加到模版中。')</script>");
}
if(reu == "1")
{
page.registerstartupscript("","<script>alert('該項(xiàng)內(nèi)容您已經(jīng)定制過了,不需要重復(fù)定制。')</script>");
}
if(reu != "0" && reu != "1")
{
page.registerstartupscript("","<script>alert('有一個(gè)異常問題:請您聯(lián)系我們的客戶服務(wù)人員。')</script>");
}
原本以為,可以很輕松地實(shí)現(xiàn)代碼定義的操作,可是不然,斷點(diǎn)調(diào)試發(fā)現(xiàn)根本就不進(jìn)!于是反復(fù)調(diào)試,反復(fù)失敗!
無奈中,去到 msdn(http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/vbcon/html/vbtskrespondingtobuttoneventsindatalistitems.asp)看看,發(fā)現(xiàn)有這么一段提示:“注意 如果您調(diào)用了父控件(datalist、repeater 或 datagrid 控件)的 databind 方法,itemcommand 事件將不會(huì)發(fā)生,原因是父控件的內(nèi)容已經(jīng)重置。因此,您通常不需要在每次往返時(shí)調(diào)用 databind 方法(即在初始化頁時(shí)無需檢查發(fā)回)。”
于是,到cs文件中,將pageload中的datalist databind代碼段外加上if(!page.ispostback),再調(diào)試,一切如所期望的那樣,順利執(zhí)行。
新聞熱點(diǎn)
疑難解答
圖片精選