You could actually do this in several ways. The trick is to think
object-oriented. First, you'll need to place your databsae code within an
event. You can't just place it inline as you could in classic asp. Your best
bet is to place it in the Page_Load event of your MenuSub.ascx.cs file. You
can do a couple of different things here.
The easiest, is to create a Literal control at the location you want between
the td elements like so:
<TD vAlign="middle" align="center" width="900" height="20"><asp:Literal
id="myLinks" runat="server"/></TD>
Now, in the codebehind you'll need to ensure you have this declared as a
variable as so:
protected Literal myLinks;
You can create your while loop just like you do, except instead of
response.writing, concatenate it into a string. Once you're done with the
look you can then dump the string which now holds the concactenated link
strings right into the literal such as myLinks.Text = stringLinks;
Of course, you could do it by creating a new HtmlAnchor object during each
iteration, setting the values from the datareader, and then adding them as a
child control to the literal. That would be the more object oriented
approach and give you a bit more control later on if you want to tie
server-side events such as an onlclick event to them, but initially you
would just end up with using a bit more memory and slower response to create
each object in the list.
Hope this helps,
Mark Fitzpatrick
Microsoft MVP - FrontPage
"Garth Wells" <no****@nowhere.com> wrote in message
news:e8**************@TK2MSFTNGP14.phx.gbl...
used the following "classic ASP" approach to build a dynamic menu, but
would
like to know the proper way to implement the same functionality using a
.Net
technique (e.g., placing the code in the .cs file and dynamically building
the
hyperlink controls). The controls need to appear within the same <TD>,
separated by two spaces
Thanks for your help
-----
<%@ Import Namespace="Microsoft.Practices.EnterpriseLibrary.D ata" %>
<%@ Import Namespace="Microsoft.Practices.EnterpriseLibrary.D ata.Sql" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Common" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="MenuSub.ascx.cs"
Inherits="SubMenu" %>
<table id="table1" cellSpacing="0" cellPadding="0" width="900" border="0">
<TR bgColor="#2a69b3">
<TD vAlign="middle" align="center" width="900" height="20">
<%
Database db = DatabaseFactory.CreateDatabase();
string sqlCommand = "pr_MenuSub_SELECT";
DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand);
db.AddInParameter(dbCommand, "MM_Description", DbType.String,
"HR");
using (IDataReader dataReader = db.ExecuteReader(dbCommand))
{
while (dataReader.Read())
{
// Get the value of the Name column in the
DbDataReader.
Response.Write("<a href=" +
dataReader["MS_Page"].ToString() + ">" +
dataReader["MS_Description"].ToString()
+ "</href>");
Response.Write(" ");
}
}
%>
</TD>
</TR>
</table>