2017-05-17 5 views
0

GridView列にチェックボックスコントロールを動的に追加しました。 各GridView_RowBound()イベントで、チェックボックスが列に追加されています。 また定義され、以下のようにRowBound()イベントでCheckBox_CheckedChangedイベント、AutoPostBack = TrueでないCheckBox CheckedChangedイベント

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 

「Checkbox- 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に設定するので、別のコントロールによって次のPostBackに対してのみ起動します。 – VDWWD

+0

CHECKEDのグリッドに追加された他のテンプレートコントロール(ラジオボタンとテキストボックス)を無効にしたい。 AutoPostBackをTRUEに設定した後、CheckBoxをクリックすると、CheckedChangedイベントが発生します。チェックを外すと、トリガーされません。 後で、ページの読み込み時にChecked = Trueを設定しました。チェックされていないときにイベントがトリガーされ、チェックされていないときにイベントがトリガーされるようになりました。 この現象の原因はわかりますか? – VHK

+0

すべてのページの読み込み時にダイナミックコントロールを追加しています(ポストバックを含む)。そうでなければ、2回目に失敗するでしょう。 – VDWWD

答えて

0

あなたはTRUEにチェックボックスののAutoPostBackを設定したくない場合は、デフォルト値でグリッド全体を再ロードするので、あなたはAutoPostBack="True"と設定しようとします:あなたが期待しているとき

`<`asp:UpdatePanel ID="itemPanel" runat="server" UpdateMode="Conditional"`>`<br/> 
       `<`ContentTemplate`>`<br/> 
        //your controls<br/> 
       `<`/ContentTemplate`>`<br/> 
`<`/asp:UpdatePanel`>` 
関連する問題