Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DiFalco

Problemão com DataGrid

Recommended Posts

galera, tô com um baita pepino nas mãos, é o seguinte: tenho um data grid onde preciso adicionar em RunTime 2 controles conforme dados q me são enviados: 1 DropDownList e 1 TextBox, no DropDownList existem valores q devem ser somados e colocados no TextBox, pois bem, o problema é q quando seleciono um valor DropDownList e faço a leitura do DataGrid para fazer o somatório, ele simplesmente nao acha controle algum na célula correspondente. Segue o Código:

 

Esse é chamado pelo OnItemDataBound e onde adiciono os controles:

Public Sub BindGrid(ByVal sender As Object, ByVal e As DataGridItemEventArgs)        Dim i As Integer     If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then            If e.Item.Cells(1).Text = "0" And Not e.Item.Cells(2).Text = "<b>Sub-Total:</b>" Then                e.Item.BackColor = System.Drawing.Color.FromArgb(200, 237, 255)                e.Item.Cells(2).Text = "<b>Fator:</b> " & e.Item.Cells(2).Text                e.Item.Cells(2).Text = Replace(e.Item.Cells(2).Text, "<b>Fator:</b> <b>Fator:</b> ", "<b>Fator:</b> ")                e.Item.Cells(3).Text = ""            ElseIf e.Item.Cells(2).Text = "<b>Sub-Total:</b>" Then                e.Item.BackColor = System.Drawing.Color.LightGray                Dim txtSubTotal As New TextBox                txtSubTotal.CssClass = "FORMELEMENTGRID"                e.Item.Cells(3).Controls.Add(txtSubTotal)                e.Item.Cells(2).HorizontalAlign = HorizontalAlign.Right            Else                e.Item.Cells(2).Text = "           <b>Sub-Fator:</b> " + e.Item.Cells(2).Text                e.Item.Cells(2).Text = Replace(e.Item.Cells(2).Text, "           <b>Sub-Fator:</b>            <b>Sub-Fator:</b> ", "           <b>Sub-Fator:</b> ")                Dim cboPeso As New DropDownList                cboPeso.Items.Insert(0, "0")                cboPeso.Items.Insert(1, "1")                cboPeso.Items.Insert(2, "2")                cboPeso.Items.Insert(3, "3")                cboPeso.CssClass = "FORMELEMENT"                cboPeso.AutoPostBack = True                e.Item.Cells(3).Controls.Add(cboPeso)            End If        End If    End Sub

esse é onde faço a varredura para fazer o somatório:

Private Sub CalculaSubTotal()        Dim CodFator As String        Dim i, v As Integer        Dim strFatorCampos(3) As String        Dim Fator(3) As String        Dim Total As Integer        Dim myControl As Control        strFatorCampos(0) = "Codigo"        strFatorCampos(1) = "CodigoSub"        strFatorCampos(2) = "Titulo"        strFatorCampos(3) = "Peso"        Session("dsFator") = Geral.MontaDataSet(strFatorCampos)        For v = 0 To dgFatorSubFator.Items.Count - 1            Fator(0) = dgFatorSubFator.Items(v).Cells(0).Text            Fator(1) = dgFatorSubFator.Items(v).Cells(1).Text            Fator(2) = dgFatorSubFator.Items(v).Cells(2).Text            If dgFatorSubFator.Items(v).Cells(1).Text <> "0" Then                For Each myControl In dgFatorSubFator.Items(v).Cells(3).Controls                    If myControl.GetType.ToString = "System.Web.UI.WebControls.DropDownList" Then                        Fator(3) = CInt(DirectCast(dgFatorSubFator.Items(v).Cells(3).FindControl("cboPeso"), DropDownList).SelectedItem.Value)                    ElseIf myControl.GetType.ToString = "System.Web.UI.WebControls.TextBox" Then                        Fator(3) = 0                        For x As Integer = 1 To i                            Fator(3) = CInt(Fator(3)) + CInt(DirectCast(dgFatorSubFator.Items(v - x).Cells(3).FindControl("cboPeso"), DropDownList).SelectedItem.Value)                            Total = Total + CInt(Fator(3))                        Next                        i = 0                    End If                Next                            Else                i = i + 1            End If            Session("dsFator") = Geral.CarregaDataSet(Fator, Session("dsFator"))        Next        txtTotal.Text = Total        dgFatorSubFator.DataSource = Session("dsFator")        dgFatorSubFator.DataBind()        Session("dsFator") = Nothing    End Sub

se alguém puder me ajudar eu agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara se ele não está encontrando os controles você deverá qdo varrer o datagrid criar novamente os controles dentro dele... senão ele não encontra mesmo...ou seja, mesmo se você ativar algum Evento, antes dele deverá ser populado o datagrid e adicionado os controles... ok?Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara se ele não está encontrando os controles você deverá qdo varrer o datagrid criar novamente os controles dentro dele... senão ele não encontra mesmo...

 

ou seja, mesmo se você ativar algum Evento, antes dele deverá ser populado o datagrid e adicionado os controles... ok?

 

Att,

Carlos

<{POST_SNAPBACK}>

tá.. entendi.. mas se eu popular o DataGrid novamente, eu nao vou perder os dados q eu coloquei nas DropDownLists nao vao ser perdidos ?????

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, pois vai estar no ViewState... ai na hora q ele recria... ele já recupera o valor definido...entendeu?Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.