Form code generator V1.1 by Steve Schofield[bate2 等级:中级

80酷酷网    80kuku.com

  This article revolves around being plain lazy. When it comes to creating Form code based on some  database table, I hate it! This code sample goes along way in speeding this process up for me.   There still is some manual parts to finish up the form code but this takes care of remembering what columns are in the database table.    In future releases, we'll provide more functionality to further automate this but this is a big first step in my opinion!  The following four steps listed below can be followed and this will generate the ASP.NET code. A big thanks to Dave W. Webmaster of  for saving me on many things!!

Define what database you want to connect to in the config.web.  This is stored in the connection string
<configuration>
    <appsettings>
        <add key="dsn" value="server=localhost;uid=sa;pwd=;database=aspfree" />
    </appsettings>
</configuration>
Load the aspx page in your browser, select the table to create the Form code from
Select the checkboxs of which fields to be on the form
Copy and paste into your code..
Here is a screen shot of the File after following the above steps.



Here is the code:

<% Page Language="VB" EnableSessionState="False" EnableViewState="True" Trace="False" Debug="False" Strict="True" %>
<% Import Namespace="System.Text" %>
<% Import Namespace="System.Data" %>
<% Import Namespace="System.Data.SqlClient" %>
<script language="VB" runat="server">
Dim sqlText as String
Dim ds as New DataSet
Dim dbComm AS New SQLDataAdapter
Dim conn AS SQLConnection
Dim sqlServer as String

Sub Page_Load(sender As Object, e As EventArgs)

          SQLserver = GetSqlConn()
          conn = New SQLConnection(SQLserver)


          If Not IsPostBack then
                    sqlText = "select id, name from sysobjects where xtype='U' order by name"
                    dbComm = New SQLDataAdapter(sqlText,conn)
          dbComm.Fill(ds,"AllTables")
          tblList.DataSource = ds.Tables("AllTables").DefaultView
          tblList.DataTextField = "name"
          tblList.DataValueField = "name"
          tblList.DataBind()
End if


End Sub

Function CreateValidator(myName as string) as String
          Dim mySB as StringBuilder = New StringBuilder()

          REM -- use :<some text>: as placeholders
          mySB.Append ("<asp:RequiredFieldValidator runat=""server"" id="":Name:"" ControlToValidate="":control:"" ErrorMessage="":errMsg:"" display=""Static"">This Required Field!</asp:RequiredFieldValidator>" )

          mySb.Replace(":Name:","vld" & myName) 'add the validator name
          mySb.Replace(":control:","at" & myName) 'add the control name
          mySb.Replace(":errMsg:",myName & " is required")

Return mySb.ToString()

End Function


Function GetSqlConn() as String
          Dim DSN as String = ConfigurationSettings.AppSettings("DSN")
          Return DSN
End Function


Sub GetTable_Click(sender As Object, e As EventArgs)
          Dim sqlText as String
          sqlText = "SELECT syscolumns.name, syscolumns.isnullable FROM sysobjects INNER JOIN syscolumns ON sysobjects.id = syscolumns.id where sysobjects.name = '" & tblList.SelectedItem.Text & "' ORDER BY syscolumns.colid"

REM -- Connect to SQL
          dbComm = New SQLDataAdapter(sqlText,conn)

REM -- Fill DataSet
          dbComm.Fill(ds,"TestData")
          MyDataGrid.DataSource = ds.Tables("TestData").DefaultView
          MyDataGrid.DataBind()


REM -- Show the results
          myPanel.Visible= True

End Sub



Sub Button1_Click(sender As Object, e As EventArgs)

          Dim i As Integer
          Dim _item As DataGridItem
          Dim dr As DataRow
          Dim sb as StringBuilder = New StringBuilder()
          Dim strOutput as String

REM -- Auto Generate The Form
          sb.Append( "<form runat=""server"" id=""form2"" name=""form2"">" & Chr(13) & Chr(10) )
          sb.Append( " <table border=1>" & chr(13))


          For i = 0 To MyDataGrid.Items.Count - 1
REM -- Get the checkbox
          _item = MyDataGrid.Items(i)
          Dim addCheckBox As CheckBox = Ctype(_item.FindControl("chkAdd"),CheckBox)
          Dim validCheckBox as CheckBox = Ctype(_item.FindControl("chkValid"),CheckBox)

                    If addCheckBox.Checked then
                              sb.Append( " <tr>" & chr(13))
                              sb.Append( " <td>" & _item.Cells(1).Text & "</td>" & chr(13))
                              sb.Append( " <td>")
                              sb.Append( "<asp:textbox id=""at" & _item.Cells(1).Text & """ runat=""server"" />" )

                              'create a validator control
                              If validCheckBox.Checked then
                                        sb.Append (" " & chr(13) & CreateValidator(_item.Cells(1).Text ) )
                              End if

                              sb.Append ("</td>" & chr(13)) '
                              sb.Append ( " </tr>" & chr(13)) ' close out the row
                    End if

Next
          sb.Append ( " <tr>" & chr(13)) ' close out the row
          sb.Append(" <td colspan=""2""><asp:button id=""button1"" Text=""Validate Form"" runat=""Server"" /></td>" & chr(13))
          sb.Append ( " </tr>" & chr(13)) ' close out the row
          sb.Append ( " </table>" & chr(13) )
          sb.Append(chr(13) & "</form>")
          strOutput = sb.ToString()
          strOutput = System.Web.HttpUtility.HTMLEncode(strOutput)
          taResults.Value = strOutput
          pnlTextarea.Visible=True
End Sub

</script>

<html>
<head>
<title></title>
</head>
<body bgcolor="#FFFFFF" >
          <form runat="server" id=form1>
                    Select a tablename to create a .NET form for:
                              <asp:dropdownlist id="tblList" runat="server"/>  
<asp:Button id=GetTable Text="Get Table" onclick="GetTable_Click" runat="server" />

<asp:panel id=myPanel runat="server" visible="false">


Select the Columns used for generating the form.

<asp:datagrid id=MyDataGrid runat="server"
BorderColor="black"
BorderWidth="1"
CellPadding="3"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
AutoGenerateColumns="False"
>
<Columns>
<asp:TemplateColumn HeaderText="Add?">
<ItemTemplate>
<center>
<asp:CheckBox id=chkAdd runat="server" />
</center>
</Itemtemplate>
</asp:TemplateColumn>

<asp:BoundColumn HeaderText="Name" DataField="name"/>

<asp:TemplateColumn HeaderText="Create Validator?">
<ItemTemplate>
<center>
<asp:CheckBox id=chkValid runat="server" />
</center>
</Itemtemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

<asp:Button id=Button1 Text="Create Form" onclick="Button1_Click" runat="server" />
</asp:panel>

<asp:panel id="pnlTextarea" visible="false" runat="server">
<p>Copy this code into a new ASP.NET page</p>
<textarea id=taResults cols=90 rows=40 runat="server" />
</asp:panel>

</form>
</body>
</html>

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: