2017-05-17 70 views
0

我將複選框控件動態添加到GridView列中。 在每個GridView_RowBound()事件上,複選框都被添加到列中。 另外定義,CheckBox_CheckedChanged事件中,如下所示RowBound()事件,CheckBox CheckedChanged event without AutoPostBack = True

Protected Sub GridviewChildItem_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) 

    If e.Row.RowType = DataControlRowType.DataRow AndAlso Not String.IsNullOrEmpty(CRMSignCond) Then 
     Dim lbValue As Label = DirectCast(e.Row.Cells(5).FindControl("lbValue"), Label) 
     e.Row.Cells(5).Attributes.Add("onmousemove", "Show('" + lbValue.Text + "')") 
     e.Row.Cells(5).Attributes.Add("onmouseout", "this.style.backgroundColor=this.oldcolor;Hide();") 
    End If 

    AddTemplateControls(Nothing, e) 


End Sub 
Private Sub AddTemplateControls(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) 
    Dim cbTargetSign As New CheckBox 
    Dim rbConsolidate As New RadioButtonList 
    Dim tbSignGrp As New TextBox 

    cbTargetSign.ID = "chkSelect" 
    cbTargetSign.AutoPostBack = False 
    cbTargetSign.Checked = True 
    rbConsolidate.ID = "rbConsolidate" 
    tbSignGrp.ID = "tbSigningGroup" 
    tbSignGrp.Width = 25 
    If Not e.Row.RowIndex = -1 Then 
     e.Row.Cells(6).Controls.Add(cbTargetSign) 
     e.Row.Cells(4).Controls.Add(tbSignGrp) 
     e.Row.Cells(7).Controls.Add(rbConsolidate) 
    End If 
    rbConsolidate.RepeatDirection = RepeatDirection.Horizontal 
    rbConsolidate.Items.Add("Yes") 
    rbConsolidate.Items.Add("No") 
    rbConsolidate.Items(1).Selected = CBool(True) 
    If cbTargetSign.Checked Then 
     rbConsolidate.Enabled = False 
    End If 
    **AddHandler cbTargetSign.CheckedChanged, AddressOf cbTargetSign_CheckedChanged** 
End Sub 

「複選框 - 的CheckedChanged事件。

Public Sub cbTargetSign_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) 

End Sub 

每次,當我檢查網格中的複選框時,checkedChanged事件不會觸發。任何人指導我如何解決這個問題?

注意:我不想將AutoPostBack的複選框設置爲TRUE,因爲它會使用默認值重新加載整個網格。

enter image description here

+0

當你期待'checkedChanged'觸發?因爲您將autopostback設置爲false,它只會在另一個控件的下一個回發中觸發。 – VDWWD

+0

我想在CHECKED中禁用網格中添加的其他模板控件(單選按鈕和文本框)。 將AutoPostBack設置爲TRUE後,在CheckBox單擊,CheckedChanged事件被觸發。 UnCheck後,它不會被觸發。 稍後,我在頁面加載時設置了Checked = True,現在事件在未選中時觸發,而不是在選中時觸發。 我可以知道這種行爲的原因嗎? – VHK

+0

您是否在每個頁面加載(幷包括回發)上添加動態控件。如果不是,那麼第二次就會失敗。 – VDWWD

回答

0

如果你不想設置複選框爲TRUE的AutoPostBack,因爲它與重新加載默認值,整個網格,你會嘗試設置AutoPostBack="True"和:

`<`asp:UpdatePanel ID="itemPanel" runat="server" UpdateMode="Conditional"`>`<br/> 
       `<`ContentTemplate`>`<br/> 
        //your controls<br/> 
       `<`/ContentTemplate`>`<br/> 
`<`/asp:UpdatePanel`>` 
相關問題