Search code examples
asp.netcssformsdata-entry

How to create multi-column data entry form using CSS in Asp.Net?


While converting a desktop application to a web app, I've run across my ignorance when attempting to implement a multi-column data entry form using CSS. I'm resolved to avoid using tables for this type of thing, and while I found a good reference to laying out a data entry form, I can find nothing that applies to multiple-column layouts like this one:

enter image description here

Can anyone point me in the right direction?


Solution

  • Here's a screen shot, please notice how I demonstrated the tab order with numbers:

    alt text

    Please note that RedFilter's answer has a different tab order, which I have demonstrated in the screenshot below:

    alt text

    (code below complete with ASP.NET validators)

    CSS (cross browser friendly)

    p
    {
     margin:1em 0;
    }
    label
    {
     float:left;
     width:5em;
     text-align:right;
     margin-right:0.5em;
    }
    input[type="text"]
    {
     width: 10em;
    }
    .left-column, right-column
    {
     float:left;
    }
    .left-column
    {
     margin-right:1em;
    }​
    .textarea-label
    {
     float:none;
    }
    textarea
    {
     height:5em;
     width:35em;
    }​
    

    HTML

    <div class="left-column">
      <p>
        <label for="tbDepartment">Department:</label>
        <asp:TextBox ID="tbDepartment" runat="server" MaxLength="255" />
        <asp:RequiredFieldValidator ID="valDepartment" TabIndex="-1" runat="server" ControlToValidate="tbDepartment">&nbsp;*</asp:RequiredFieldValidator>
      </p>
      <p>
        <label for="tbFund">Fund:</label>
        <asp:TextBox ID="tbFund" runat="server" MaxLength="255" />
        <asp:RequiredFieldValidator ID="valFund" TabIndex="-1" runat="server" ControlToValidate="tbFund">&nbsp;*</asp:RequiredFieldValidator>
      </p>
      <p>
      <label for="tbProgram">Program:</label>
        <asp:TextBox ID="tbProgram" runat="server" MaxLength="255" />
        <asp:RequiredFieldValidator ID="valProgram" TabIndex="-1" runat="server" ControlToValidate="tbProgram">&nbsp;*</asp:RequiredFieldValidator>
      </p>
    </div>
    <div class="right-column">
      <p>
        <label for="tbProject">Project:</label>
        <asp:TextBox ID="tbProject" runat="server" MaxLength="255" />
        <asp:RequiredFieldValidator ID="valProject" TabIndex="-1" runat="server" ControlToValidate="tbProject">&nbsp;*</asp:RequiredFieldValidator>
      </p>
      <p>
        <label for="tbSpeedKey">Speed Key:</label>
        <asp:TextBox ID="tbSpeedKey" runat="server" MaxLength="255" />
        <asp:RequiredFieldValidator ID="valSpeedKey" TabIndex="-1" runat="server" ControlToValidate="tbSpeedKey">&nbsp;*</asp:RequiredFieldValidator>
      </p>
      <p>
        <label for="tbAward">Award:</label>
        <asp:TextBox ID="tbAward" runat="server" MaxLength="255" />
        <asp:RequiredFieldValidator ID="valAward" TabIndex="-1" runat="server" ControlToValidate="tbAward">&nbsp;*</asp:RequiredFieldValidator>
      </p>
    </div>​
    <div>
      <p>
        <label class="textarea-label" for="taProjectDesc">Project Description:</label>
      </p>
      <p>
        <asp:TextBox ID="taProjectDesc" runat="server" TextMode="MultiLine" />
        <asp:RequiredFieldValidator ID="valProjectDesc" TabIndex="-1" runat="server" ControlToValidate="taProjectDesc">&nbsp;*</asp:RequiredFieldValidator>
      <p>
    </div>