使用c#/asp.net显示数据库中的超链接列表
我是一个asp.net/c新手,我正在尝试创建一个从我的数据库生成的非常简单的菜单。 到目前为止,我已经成功地将表从数据库提取到一个数据表中,然后从那里提取到一个数组中 我的问题是,我还没有弄清楚如何在页面中使用循环中的数据(菜单会根据用户类型而变化)。 我试着使用使用c#/asp.net显示数据库中的超链接列表,c#,asp.net,C#,Asp.net,我是一个asp.net/c新手,我正在尝试创建一个从我的数据库生成的非常简单的菜单。 到目前为止,我已经成功地将表从数据库提取到一个数据表中,然后从那里提取到一个数组中 我的问题是,我还没有弄清楚如何在页面中使用循环中的数据(菜单会根据用户类型而变化)。 我试着使用,但我似乎无法在while/for循环甚至赋值行中使用它 也许我用错误的方式来攻击它,我想我的问题基本上是这样的: 如何在动态页面中使用从数据库(名称、URL)收集的数据 以下是我当前的隐藏代码: public string[
,但我似乎无法在while/for循环甚至赋值行中使用它
也许我用错误的方式来攻击它,我想我的问题基本上是这样的:
如何在动态页面中使用从数据库(名称、URL)收集的数据
以下是我当前的隐藏代码:
public string[] keep = new string[100];
public void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Response.Write("response in postback");
getMenu();
}
}
void getMenu()
{
Response.Write("response in getmenue");
SqlConnection con = new SqlConnection();
con.ConnectionString = "server=(local);database=PhilipsMaterials;Integrated Security=SSPI;";
con.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string sql = "Select * from Materials";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(ds);
dt = ds.Tables[0];
DataRow[] drowpar = dt.Select();
int i = 0;
foreach (DataRow dr in drowpar)
{
keep[i] = dr["Material Name"] as string;
i = i + 1;
}
con.Close();
}
谢谢。您只需要使用数据控件,如gridview或repeater。然后可以将数据集绑定到这些控件的datasource属性。从我的观点来看,中继器将是动态菜单的最佳数据控制 这是中继器的加价
<asp:Repeater ID="Rept" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><a href='<%#Eval("url") %>'><%#Eval("names") %></a></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
一种很好且清晰的方法,它也与header兼容,UpdatePanel是在页面内使用文本控件,并在菜单上呈现 在页面中的某个位置放置文字:
<asp:Literal runat="server" ID="txtInfo" EnableViewState="false" />
例如,您的代码如下所示:
using(SqlConnection con = new SqlConnection())
{
con.ConnectionString = "server=(local);database=PhilipsMaterials;Integrated Security=SSPI;";
con.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string sql = "Select * from Materials";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(ds);
dt = ds.Tables[0];
DataRow[] drowpar = dt.Select();
StringBuilder sbRenderOnMe = new StringBuilder();
foreach (DataRow dr in drowpar)
{
sbRenderOnMe.AppendFormat("Some Menu Names : {0}", dr["Material Name"]);
}
con.Close();
}
txtInfo.Text = sbRenderOnMe.ToString();
一些注意事项:不要使用响应。特别是从代码后面写入,因为您可能在页面的第一个字节之前写入。响应。Write
是对输出的直接写入-在您的情况下,您赢得了创建一些数据并将它们放在页面上特定的位置,响应。Write
帮不上忙,无法从代码隐藏处处理,因为这只是对页面的直接写入
StringBuilder sbRenderOnMe = new StringBuilder();
sbRenderOnMe.Append("<br> Some Text");
txtInfo.Text = sbRenderOnMe.ToString();
using(SqlConnection con = new SqlConnection())
{
con.ConnectionString = "server=(local);database=PhilipsMaterials;Integrated Security=SSPI;";
con.Open();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
string sql = "Select * from Materials";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(ds);
dt = ds.Tables[0];
DataRow[] drowpar = dt.Select();
StringBuilder sbRenderOnMe = new StringBuilder();
foreach (DataRow dr in drowpar)
{
sbRenderOnMe.AppendFormat("Some Menu Names : {0}", dr["Material Name"]);
}
con.Close();
}
txtInfo.Text = sbRenderOnMe.ToString();