2009-12-09 53 views
0

我正在爲我們的人力資源部門開發一個ASP.net 2網站,其中頭版包含我們所有部門對付薪級的矩陣,每個單元中的鏈接都是該部門的所有工作。 由於每個部門都有不同數量的團隊,因此這些鏈接會帶您動態填充gridview的頁面。財務有一個團隊,IT有四個。每個單元格都有一個插入到其中的Web用戶控件。 用戶控件有一個sql數據源,用鏈接按鈕的文本值綁定到作業標題,提取所有工作標題和主鍵,使用formbutton。 (我使用的是usercontrol,因爲這個頁面也將用於顯示搜索一個部門的一系列等級中的所有角色的結果,並且將具有不同數量的行)。在父級GridView中的webuser控件中嵌套gridview/formview

我已經有一切都很好地顯示,但是當我點擊linkbutton,而不是運行我已經放在Click事件中的代碼時,頁面發回而不會觸發任何事件。

環顧四周,看起來我必須在某處放置一個addhandler行,但我不確定在哪裏,有人能給我一些指示嗎? (相當數量的請,我不太經驗的ASP還有翅膀它。我也使用VB,但C#不是問題)

這是我如何將控件插入到父網格,我錯過了什麼明顯的?

 For row As Int16 = 0 To dgvRoleGrid.Rows.Count - 1 
      tempwuc = New UserControl 
      tempwuc = LoadControl("wucRoleList.ascx") 
      tempwuc.ID = "wucRoleList" & col.ToString 
      tempwuc.EnableViewState = True 
      dgvRoleGrid.Rows(row).Cells(col).Controls.Add(tempwuc) 
      CType(dgvRoleGrid.Rows(row).FindControl(tempwuc.ID), wucRoleList).specialtyid = specid 
      CType(dgvRoleGrid.Rows(row).FindControl(tempwuc.ID), wucRoleList).bandid = dgvRoleGrid.DataKeys(row)(0) 
      CType(dgvRoleGrid.Rows(row).FindControl(tempwuc.ID), wucRoleList).familyid = Session("familyid") 


     Next 

回答

0

硬盤,而無需看看更多代碼的說,但不能從一箇中繼器的信號接收事件的最常見的原因是要重新綁定的數據,而不是依靠的ViewState 。您的代碼是否如下所示:

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!Page.IsPostBack) // <--- YOU REALLY NEED THIS! 
     { 
      DoDataBinding(); 
     } 

    } 
} 

您是否缺少IsPostBack檢查?另外...爲什麼你使用FindControl的時候,如果你已經有了控件的句柄?在聲明/加載控件時轉換爲適當的類型。

0

我這樣做的原因是我對這一切都很陌生,並且看起來似乎有效;在我面臨的最後期限之前,我沒有時間去找到最優雅的解決方案,只要它穩定並有效,它就可以做到。

有一個ispostback檢查,它不會在回發時重新綁定數據源。

我已經通過使用treeviews,使用數據綁定事件來修改回發URL以包含該值作爲參數,但我仍想解決如何讓這個工作正常。

相關問題