私はデータを動的に表示する方法を見つけようとしてきましたが、うまくいきませんでした。アラートシステム(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>
目的は、作成された文字列をページに表示できるようにすることです。また、これらの行ごとに、(DB上の)alertIDと同じIDを持つチェックボックスを提供します。これは、次のようにマークするのを簡単にするためです。読む。
私はここで本当に迷子になっていて、助けを借りることができます。