開發花絮:一個DataList的ItemCommand事件意外

來源:互聯網
上載者:User
command 在寫一個DataList按鈕事件時,遇到一個問題:雖然不是很有難度,但是可能會有人遇到而且會和我一樣一籌莫展,直到看MSDN時,無意中發現了一句話~

事情是這樣子的:

    我需要在DataList中插入一個普通按鈕,實現對Item的操作,於是,我就編輯項模版 -- 插入按鈕,設定該按鈕的CommandName為Button2,然後結束編輯項模版,選中該DataList,在屬性對話方塊內按了那個黃色的小閃電標誌,雙擊“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('您已經成功定製了該內容,您可以返回到控制台頁面點擊“使用模組”直接使用,也可以在定製模版時添加到模版中。')</script>");
    }
    if(reu == "1")
    {
     Page.RegisterStartupScript("","<script>alert('該項內容您已經定製過了,不需要重複定製。')</script>");
    }
    if(reu != "0" && reu != "1")
    {
     Page.RegisterStartupScript("","<script>alert('有一個異常問題:請您聯絡我們的客戶服務人員。')</script>");
    }

   原本以為,可以很輕鬆地實現代碼定義的操作,可是不然,斷點調試發現根本就不進!於是反覆調試,反覆失敗!

   無奈中,去到 MSDN(http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/vbcon/html/vbtskrespondingtobuttoneventsindatalistitems.asp)看看,發現有這麼一段提示:“注意   如果您調用了父控制項(DataList、Repeater 或 DataGrid 控制項)的 DataBind 方法,ItemCommand 事件將不會發生,原因是父控制項的內容已經重設。因此,您通常不需要在每次往返時調用 DataBind 方法(即在初始化頁時無需檢查發回)。”

  於是,到cs檔案中,將PageLoad中的DataList   DataBind程式碼片段外加上if(!Page.IsPostBack),再調試,一切如所期望的那樣,順利執行。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。