Populating card view from database in ASP.Net



Net。我想要一个类似于recyclerview的东西,在aspx文件中有一张卡,它根据数据库中的条目数量不断重复。因此,如果我的数据库表假设有3个特定名称的条目,那么页面中应该有3张卡片。

以下是我到目前为止所做的:在我的.aspx文件中:

<div class="item-card9">
<a href="info_page.aspx" class="text-dark">
<h4 class="font-weight-semibold mt-1">
<asp:Label ID="Label1" runat="server" >
<%# uni_name %>
</asp:Label>
</h4>
</a>
</div>

对于我的aspx.cs:-

public string uni_name;
SqlCommand cmd = new SqlCommand();
//SQL connection here
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
cmd.CommandText = //select statement here
cmd.Connection = con;
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
uni_name = rd["name"].ToString();
}
this.DataBind();
con.Close();
}

到目前为止,我只能从数据库中获得1个条目,但我希望它一直重复到数据库结束。

您需要某种数组来显示:

CS-

public List<string> Names { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
cmd.CommandText = //select statement here
cmd.Connection = con;
SqlDataReader rd = cmd.ExecuteReader();
Names = new List<string>();
while (rd.Read())
{
Names.Add(rd["name"].ToString());
}
this.DataBind();
con.Close();
}

ASP

<%foreach (var name in this.Names)
{%>
<p><%=name%></p>
<%}%>

更新。如果你有一个像这样的复杂对象

class MyObj
{
public string ID;
public string Name;
}

你仍然可以在这里使用它而不是字符串。

public List<MyObj> Items{ get; set; }
protected void Page_Load(object sender, EventArgs e)
{
con.Open();
cmd.CommandText = //select statement here
cmd.Connection = con;
SqlDataReader rd = cmd.ExecuteReader();
Items = new List<MyObj>();
while (rd.Read())
{
var item = new MyObj
{
Name = rd["name"].ToString(),
Id = rd["id"].ToString()
};
Names.Add(item);
}
this.DataBind();
con.Close();
}

然后像一样使用

<%foreach (var item in this.Items)
{%>
<p><%=item.Id%> <%=item.Name%></p>
<%}%>

最新更新