Consider using a ListBox web control.
1. You supply the options for the user to choose rather than free type (free text is always a validation headache for you to keep sh** out of your db)
2. ListBox has a multiselect mode (user can use shift or ctrl key to select more than one option if you set the property to true)
3. You can iterate the ListBox as it implements IEnumarable, which has gotta be easier than parsing a fat wedge of text from a textarea (which is what a multiline textbox is rendered as to the client)
Example code:
the aspx page
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ListBox ID="lstOptions" runat="server" SelectionMode="Multiple">
<asp:ListItem Value="Option1" Text="Option1"></asp:ListItem>
<asp:ListItem Value="Option2" Text="Option2"></asp:ListItem>
<asp:ListItem Value="Option3" Text="Option3"></asp:ListItem>
<asp:ListItem Value="Option4" Text="Option4"></asp:ListItem>
</asp:ListBox>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
<br />
<asp:Repeater ID="rprChoices" runat="server">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate><li><%# Container.DataItem %></li></ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
the code behind
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
//declare an array to hold the selected options
StringCollection options = new StringCollection();
//iterate through the list items in the list box
foreach (ListItem item in lstOptions.Items)
{
//if the item was selected by the user this
//store it in our array
if(item.Selected)
options.Add(item.Value);
}
//I am merely confirming the choices back to the client
//this is where you would save the contents of options
//to your database.
rprChoices.DataSource = options;
rprChoices.DataBind();
}
}
;
Last edited by hollystyles : Mar 29th, 2007 at 4:32 pm. Reason: Add code example