2017-05-08 47 views
0

我已经在运行时添加选和单选按钮的列值到GridView。GridView控件模板场赛事

现在,我无法在Checkbox.checked

火Checkbox_CheckedChanged事件上如何调用事件有什么建议?以下是我实施的网格。

enter image description here

下面是源代码:

1)网格初始化

Dim COUNT As Integer = 0 
     For i As Integer = 0 To ListHeaderDataFieldArray.Count - 1 
      If ListHeaderDataFieldArray(i) = Me.CRMSignCond Then 
       Dim TemplateCol As New TemplateField 
       TemplateCol.ItemStyle.HorizontalAlign = HorizontalAlign.Center 
       TemplateCol.ItemStyle.Width = New Unit(RowChildWidth) 
       TemplateCol.HeaderText = ListHeaderTextArray(i) 
       TemplateCol.ItemTemplate = New GridViewTemplate(DataControlRowType.DataRow, ListHeaderDataFieldArray(i)) 
       GridviewChild.Columns.Add(TemplateCol) 
      Else 
       If ListHeaderTextArray(i) = "Target Sign" Then 
        Dim colItem As TemplateField = New TemplateField 
        colItem.HeaderText = ListHeaderTextArray(i) 
        'colItem.DataField = ListHeaderDataFieldArray(i) 
        colItem.SortExpression = ListHeaderDataFieldArray(i) 
        colItem.ItemStyle.Width = New Unit(RowChildWidth) 
        GridviewChild.Columns.Add(colItem) 
       ElseIf ListHeaderTextArray(i) = "Consolidate" Then 
        Dim colItem As TemplateField = New TemplateField 
        colItem.HeaderText = ListHeaderTextArray(i) 
        'colItem.DataField = ListHeaderDataFieldArray(i) 
        colItem.SortExpression = ListHeaderDataFieldArray(i) 
        colItem.ItemStyle.Width = New Unit(RowChildWidth) 
        GridviewChild.Columns.Add(colItem) 
       ElseIf ListHeaderTextArray(i) = "Signing Group" Then 
        Dim colItem As TemplateField = New TemplateField 
        colItem.HeaderText = ListHeaderTextArray(i) 
        'colItem.DataField = ListHeaderDataFieldArray(i) 
        colItem.SortExpression = ListHeaderDataFieldArray(i) 
        colItem.ItemStyle.Width = New Unit(RowChildWidth) 
        GridviewChild.Columns.Add(colItem) 
       Else 
        Dim colItem As BoundField = New BoundField 
        colItem.HeaderText = ListHeaderTextArray(i) 
        colItem.DataField = ListHeaderDataFieldArray(i) 
        colItem.SortExpression = ListHeaderDataFieldArray(i) 
        colItem.ItemStyle.Width = New Unit(RowChildWidth) 
        GridviewChild.Columns.Add(colItem) 
       End If 
      End If 

2)添加控件以在 “的RowDataBound” 事件在GridView列。

Protected Sub GridviewChild_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridviewChild.RowDataBound 
     If e.Row.RowType = DataControlRowType.DataRow AndAlso Not String.IsNullOrEmpty(CRMSignCond) Then 
      Dim s As String = "" 
      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 
     Dim cbTargetSign As New CheckBox 
     Dim rbConsolidate As New RadioButton 
     Dim tbSignGrp As New TextBox 
     cbTargetSign.ID = "chkSelect" 
     cbTargetSign.AutoPostBack = True 
     rbConsolidate.ID = "rbConsolidate" 
     tbSignGrp.ID = "tbConsolidate" 

     tbSignGrp.Width = 25 
     If Not e.Row.RowIndex = -1 Then 
      e.Row.Cells(6).Controls.Add(cbTargetSign) 
      e.Row.Cells(4).Controls.Add(tbSignGrp) 
      For i As Integer = 0 To 1 
       rbConsolidate = New RadioButton() 
       If i = 0 Then 
        rbConsolidate.Text = "YES" 
       Else 
        rbConsolidate.Text = "NO" 
       End If 
       'ii.Location = New Point(20, tt) 
       'ii.Tag = fileArray(i) 
       'tt = tt + 20 
       rbConsolidate.GroupName = "Consolidate" 
       e.Row.Cells(7).Controls.Add(rbConsolidate) 
      Next 
     End If 
    End Sub 

问候, VK

+0

你有你的CheckBox的AutoPostBack属性设置为true? – Mahdi

+0

是救世主,它被设置为TRUE – VHK

+0

那么我认为你应该张贴的代码了。 – Mahdi

回答

1

你加入,并在后面的代码编程结合事件,并将它们添加到GridView。而且,由于动态控件需要在每个页面加载正常工作时间重新创建,你应该确保RowDataBound事件被触发每个页面加载,这包括回发。

所以我猜你这样做(就像你通常会):

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    If Not Page.IsPostBack Then 
     GridView1.DataSource = mySource 
     GridView1.DataBind 
    End If   
End Sub 

将其更改为

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
    GridView1.DataSource = mySource 
    GridView1.DataBind  
End Sub