我一直在尝试找出一种动态呈现数据的方法,但一直没有运气。我有一个警报系统(由一个 SQL Server DB 表组成),然后我希望为该表中的每个(相关)行构造一个要在 ASP 页面中显示的字符串,并插入一个复选框(只是所以我可以将警报标记为“已读”)。
我已经拥有了所有数据(我认为我做得正确),但完全无法以我想要的方式在页面上显示这些数据。
这是 C# 代码:
protected void getAlertas(string matricula)
{
string query = "SELECT * FROM ALERTAS A ";
query += "WHERE EXISTS ( ";
query += "SELECT ID, MATRICULA FROM VEICULOS V WHERE V.MATRICULA = @matricula ";
query += "AND A.IDVEICULO = V.ID ";
query += "AND LIDA = 0)";
SqlCommand comm = new SqlCommand(query, Utils.connectDB());
matricula = matricula.ToString().Replace("\"", "'");
comm.Parameters.AddWithValue("@matricula", matricula);
StringBuilder builder = new StringBuilder();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
StringCollection alertValues = new StringCollection();
StringBuilder HTML = new StringBuilder();
try
{
comm.Connection.Open();
SqlDataReader reader = comm.ExecuteReader();
dt.Load(reader);
foreach (DataRow row in dt.Rows)
{
Label label = new Label();
CheckBox cBox = new CheckBox();
foreach (DataColumn column in dt.Columns)
{
alertValues.Add(row[column].ToString());
}
builder.Append(alertValues[0]); //ID do alerta
builder.Append(":");
builder.Append(matricula);
if (int.Parse(alertValues[10]) == 0) //se motor desligado
{
//string output = "Motor desligado às " + alertValues[3] + "do dia " + alertValues[4];
builder.Append("Motor desligado às ");
}
else if(int.Parse(alertValues[10]) == 1) //se motor ligado
{
//string output = "Motor ligado às " + alertValues[3] + "do dia " + alertValues[4];
builder.Append("Motor ligado às ");
}
builder.Append(alertValues[3]); //hora
builder.Append("do dia ");
builder.Append(alertValues[4]); //data
//HTML.Append(" <div id=\"notifications\" runat=\"server\" class=\"notifications\">");
//HTML.Append(" <div class=\"notificationText\">");
//HTML.Append("<asp:Label ID=\"Label1\" runat=\"server\" Text=\"" + builder.ToString() + "\"></asp:Label>");
//HTML.Append("</div>");
//HTML.Append("<div class=\"setRead\">");
//HTML.Append("<asp:CheckBox ID=\"" + alertValues[0] + "\" runat=\"server\" />");
//HTML.Append("</div>");
//HTML.Append("</div>");
label.Text = builder.ToString();
cBox.ID = alertValues[0];
}
}
finally
{
comm.Connection.Close();
}
}
这是我要展示数据的 ASP 页面:
<div id="contentRight">
<div id="head">
<p>
<b>Notificações</b></p>
</div>
<div id="notifications" runat="server" class="notifications">
<div class="notificationText">
<asp:Label ID="Label1" runat="server" Text="Nada para mostrar"></asp:Label>
</div>
<div class="setRead">
<asp:CheckBox ID="AlertIDRead" runat="server" />
</div>
</div>
<hr />
<div id="OkBtn" align="center">
<asp:Button ID="OkButton" class="Button" runat="server" Text="Ok" />
</div>
</div>
目标是能够将构造的字符串呈现给页面,并且对于这些行中的每一行,还提供一个 CheckBox ,它与 alertID (在数据库上)具有相同的 ID,只是为了简单地将它们标记为读。
我真的迷路了,可以使用一些帮助。