完蛋了,你的300分都给我:
看看我的代码:
      '根据条件查询生成查询统计界面
        Dim cnn As New OracleConnection(G_strCnn)
        Dim strSQLSelect As String
        If Me.CheckBoxAll.Checked Then
            strSQLSelect = "Select FETABLENAME,FEFIELDNAME,FTITLE,FINPUTCOMTYPE,FVALUETYPE,FORDER FROM SYS_525 WHERE   FETABLENAME='" & TableName & "' ORDER BY FORDER"
        Else
            strSQLSelect = "Select FETABLENAME,FEFIELDNAME,FTITLE,FINPUTCOMTYPE,FVALUETYPE,FORDER FROM SYS_525 WHERE  FCANSEARCH=0 AND FETABLENAME='" & TableName & "' ORDER BY FORDER"
        End If
        Dim dap As New OracleDataAdapter(strSQLSelect, cnn)
        Dim dt As New DataSet
        Dim iSelect As Integer = 0
        Me.DropDownListStat.Items.Clear()
        Me.DropDownListStat.Items.Add("")
        Me.DropDownListGroup.Items.Clear()
        Me.DropDownListGroup.Items.Add("")
        Try
            cnn.Open()
            dap.Fill(dt, "Tables")            For Each ditem As DataRow In dt.Tables("tables").Rows
                Dim TableQueryRow As New TableRow                '添加逻辑符号                Dim myLogicCell As New TableCell
                myLogicCell.Controls.Add(newLogic(ditem("FORDER")))
                TableQueryRow.Cells.Add(myLogicCell)
                '添加字段
                Dim myFiledCell As New TableCell
                Dim myFieldDropDown As DropDownList
                myFieldDropDown = newfield(TableName, ditem("FORDER"))
                myFieldDropDown.EnableViewState = False
                myFieldDropDown.ClearSelection()
                myFieldDropDown.SelectedIndex = iSelect
                'Response.Write(iSelect.ToString & "<br>")
                myFiledCell.Controls.Add(myFieldDropDown)
                TableQueryRow.Cells.Add(myFiledCell)
                myFieldDropDown.Dispose()
                '添加比较符号
                Dim myCompCell As New TableCell
                Dim iValueType As Integer
                If ditem.IsNull("FVALUETYPE") Then
                    iValueType = 1
                Else
                    iValueType = ditem("FVALUETYPE")
                End If
                myCompCell.Controls.Add(newComp(iValueType, ditem("FORDER")))
                TableQueryRow.Cells.Add(myCompCell)
                '添加输入
                Dim myTextCell As New TableCell
                myTextCell.Controls.Add(newText(ditem("FORDER")))
                TableQueryRow.Cells.Add(myTextCell)                Me.Table.Rows.Add(TableQueryRow)
                '初始化统计和分组
                Dim MyStat As New ListItem(ditem("FTITLE"), ditem("FEFIELDNAME") & "_" & ditem("FVALUETYPE"))
                Me.DropDownListStat.Items.Add(MyStat)
                Me.DropDownListGroup.Items.Add(MyStat)
                iSelect += 1
            Next        Catch ex As Exception
            Response.Write(ex.ToString)
        Finally            cnn.Close()
            cnn.Dispose()
        End Try    End Sub

解决方案 »

  1.   

    注意,这个是读取值得地方:
    Private Sub ImageButtonOK_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButtonOK.Click
            Dim strLogic, strFileName, strComp, strValue, strValueType, strStatComp As String        Dim iRequestItemCount As Integer
            Dim coll As System.Collections.Specialized.NameValueCollection
            coll = Request.Form
            Dim iLoop As Int16
            Dim strSql As String        For iLoop = 0 To coll.Count - 1
                Dim strs As String            If coll.GetKey(iLoop).Substring(0, 5) = "Text_" Then   '判断是不是文本筐
                    If coll.Item(iLoop).Trim <> "" Then                      '判断是不是空
                        '生成SQL语句
                        strLogic = coll.Item("Logic_" & coll.GetKey(iLoop).Substring(5))
                        strFileName = coll.Item("FieldName_" & coll.GetKey(iLoop).Substring(5))
                        strValueType = strFileName.Substring(strFileName.Length - 1, 1)
                        strFileName = strFileName.Substring(0, strFileName.Length - 2)
                        strComp = coll.Item("Comp_" & coll.GetKey(iLoop).Substring(5))
                        strValue = coll.Item("Text_" & coll.GetKey(iLoop).Substring(5))
                        Select Case strValueType
                            Case 1     '数字
                                '判断输入是否是数字
                                If IsNumeric(strValue) Then
                                    If strLogic = "Like" Then
                                        Me.Label1.Visible = True
                                        Me.Label1.Text = "数字型数据不能选择LIKE比较符号。"
                                        Exit For
                                    Else
                                        strSql += "  " & strLogic
                                        strSql += "  " & strFileName
                                        strSql += "  " & strComp
                                        strSql += "  " & strValue
                                    End If                            Else
                                    Me.Label1.Visible = True
                                    Me.Label1.Text = "请输入数字型字段输入数字型数据。"
                                    Exit For
                                End If
                            Case 2     '字符
                                If (strComp = "=" Or strComp = "<>") Then
                                    strSql += "  " & strLogic
                                    strSql += "  " & strFileName
                                    strSql += "  " & strComp
                                    strSql += "  '" & strValue & "'"
                                ElseIf strComp = "Like" Then
                                    strSql += "  " & strLogic
                                    strSql += "  " & strFileName
                                    strSql += "  " & strComp
                                    strSql += "  '%" & strValue & "%'"
                                Else
                                    Me.Label1.Visible = True
                                    Me.Label1.Text = "字符型数据类型只能选择=、<>、LIKE比较符号"
                                    Exit For
                                End If                        Case 3     '日期
                                If IsDate(strValue) Then
                                    If strComp <> "Like" Then
                                        strSql += "  " & strLogic
                                        strSql += "  " & strFileName
                                        strSql += "  " & strComp
                                        strSql += "  to_data(" & strValue & ")"
                                    Else
                                        Me.Label1.Visible = True
                                        Me.Label1.Text = "日期数据类型不能使用LIKE比较符号。"
                                        Exit For
                                    End If
                                Else
                                    Me.Label1.Visible = True
                                    Me.Label1.Text = "日期输入不正确,请输入YYYY-MM-DD方式。"
                                    Exit For
                                End If
                            Case 4     '其他
                        End Select                End If
                End If
            Next
            '普通查询
            'strSql = "Select * From " & TableName & " Where 'xiaoguizi'='xiaoguizi' " & strSql
            '统计查询
            Dim strSQLStat As String
            strStatComp = Me.DropDownListStatmethod.SelectedValue
            If strStat <> "" Then       '统计
                strValueType = strStat.Substring(strStat.Length - 1, 1)
                strStat = strStat.Substring(0, strStat.Length - 2)
                Select Case strValueType
                    Case "1"
                    Case "2", "3", "4"
                        If strStatComp <> "count" Then
                            Me.Label1.Text = "不是数字的只可以求个数!"
                            Exit Sub
                        End If
                End Select
                strSQLStat = "Select " & strStatComp & "(" & strStat & ") as 值 From " & TableName & " Where 'xiaoguizi'='xiaoguizi'" & strSql
                If strGroup <> "" Then  '分组                strGroup = strGroup.Substring(0, strGroup.Length - 2)
                    strSQLStat = "Select " & strStatComp & "(" & strStat & ") as 值 , " & strGroup & " From " & TableName & " Where 'xiaoguizi'='xiaoguizi'" & strSql & " Group by " & strGroup
                End If
            Else        End If        Dim strTarget As String = ""
            If strStat <> "" Then
                '统计查询
                strTarget = " datastat.aspx?tablename=" & TableName & "&comp=" & strStatComp & "&sqlcon=" & Server.UrlEncode(strSQLStat)
                Dim strurl As String = "<script>top.dialogArguments.location.href=""" & strTarget & """;</script>"
                Response.Write(strurl)        Else
                '普通查询
                strTarget = "datamanager.aspx?tablename=" & TableName & "&tabletype=" & TableName.Substring(0, 2) & "&sqlcon=" & Server.UrlEncode(strSql)
                Dim strurl As String = "<script>top.dialogArguments.location.href=""" & strTarget & """;</script>"
                Response.Write(strurl)        End If
        End Sub
      

  2.   

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            strType = Request.Item("Type")
            'strType = "zj"
            TableName = Request.Item("tablename")
            bStat = Request.Item("stat")        strGroup = Me.DropDownListGroup.SelectedValue
            strStat = Me.DropDownListStat.SelectedValue
            'Call LoadControls("zj_zjzy_b_BFAM")
            If Not Page.IsPostBack Then
                '初始化下拉筐
                Call LoadDropDownList(Me.DropDownListTableName, "Select FCTABLENAME,FETABLENAME FROM SYS_111 WHERE FETABLENAME LIKE '" & strType & "%' Order By Forder")
            End If
            Me.DropDownListTableName.SelectedValue = Me.DropDownListTableName.Items.FindByValue(TableName).Value
            TableName = Me.DropDownListTableName.SelectedValue
            Me.LabelTableName.Text = Me.DropDownListTableName.SelectedItem.Text
            Call LoadControls(Me.DropDownListTableName.SelectedValue)
            Me.PanelStat.Visible = bStat
            'Me.Label1.Visible = True
        End Sub
      

  3.   

    每次点击的时候,这个页面都回重新构造一次,也就是页面上所有的元素都回被摧毁然后重新构造,所以你每次点击,是先执行 Page_Load 。本来是可以考虑将整个Table对象保存在一个Session 或者 ViewState对象中 再回发事件中读出来
    但是你的text中的内容就无法保存了
    所以需要考虑 转弯的办法了 
     既然如此不如将次生成一个datatable 进行绑定