我有一个项目,我坚持这件事。我想在html表中只在三行中显示页面上的警报。目前我有三个表但我想要多个table4,table5 table6等。
这是我项目的代码:
public ArrayList myArr = new ArrayList();
public static string alarma_valoare { get; set; }
public static string alarma_denumire_punct { get; set; }
public static string alarma_timp { get; set; }
public static string alarma_mesaj { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
PresSelect();
TempSelect();
DebSelect();
DataDisplay();
}
public void PresSelect()
{
string query = "String table1";
dt = GetData(query);
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
alarm_value = dt.Rows[i]["value"].ToString();
alarm_n = dt.Rows[i]["value1"].ToString();
alarma_date = dt.Rows[i]["value2"].ToString();
alarma_text = dt.Rows[i]["value3"].ToString();
if (float.Parse(alarm_value) > 11)
{
myAr.Add(float.Parse(alarm_value));
myAr.Add(alarm_n.ToString());
myAr.Add(alarma_date.ToString());
myAr.Add(alarma_text.ToString());
}
else if (float.Parse(alarm_value) < 11)
{
myAr.Add(float.Parse(alarm_value));
myAr.Add(alarm_n.ToString());
myAr.Add(alarma_date.ToString());
myAr.Add(alarma_text.ToString());
}
}
}
}
public void TempSelect()
{
string query = "string table2";
dt = GetData(query);
if (dt.Rows.Count > 0)
{
for (int j = 0; j < dt.Rows.Count; j++)
{
alarm_value = dt.Rows[j]["value"].ToString();
alarm_n = dt.Rows[j]["value1"].ToString();
alarma_date = dt.Rows[j]["value2"].ToString();
alarma_text = dt.Rows[j]["value3"].ToString();
if (float.Parse(alarm_value) > 22)
{
myAr.Add(float.Parse(alarm_value));
myAr.Add(alarm_n.ToString());
myAr.Add(alarma_date.ToString());
myAr.Add(alarma_text.ToString());
}
else if (float.Parse(alarm_value) < 22)
{
myAr.Add(float.Parse(alarm_value));
myAr.Add(alarm_n.ToString());
myAr.Add(alarma_date.ToString());
myAr.Add(alarma_text.ToString());
}
}
}
}
public void DebSelect()
{
string query = "String table3";
dt = GetData(query);
if (dt.Rows.Count > 0)
{
for (int y = 0; y < dt.Rows.Count; y++)
{
alarm_n = dt.Rows[y]["value1"].ToString();
alarma_date = dt.Rows[y]["value2"].ToString();
alarma_text = dt.Rows[y]["value3"].ToString();
if (float.Parse(alarm_value) >33)
{
myAr.Add(float.Parse(alarm_value));
myAr.Add(alarm_n.ToString());
myAr.Add(alarma_date.ToString());
myAr.Add(alarma_text.ToString());
}
else if (float.Parse(alarm_value) < 33 )
{
myAr.Add(float.Parse(alarm_value));
myAr.Add(alarm_n.ToString());
myAr.Add(alarma_date.ToString());
myAr.Add(alarma_text.ToString());
}
}
}
}
public void DataDisplay()
{
//in this function I want to display data in my html table
}
private static DataTable GetData(string query)
{
DataTable dt = new DataTable();
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.CommandTimeout = 0;
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(dt);
}
}
return dt;
}
SqlConnection.ClearAllPools();
}
我将这些表中的所有值都放在这个数组中,如下所示:
[0] value - from table1
[1] value1 - from table1
[2] value2 - from table1
[3] value3 - from table1
[4] value - from table2
[5] value1 - from table2
[6] value2 - from table2
[7] value3 - from table2
[8] value - from table3
[9] value1 - from table3
[10] value2 - from table3
[11] value3 - from table3
结束我想在这样的html表格中显示:
Value/name Date Message
value/value1(T1) value2(T1) value3(T1)
value/value1(T2) value2(T2) value3(T2)
value/value1(T3) value2(T3) value3(T3)
当在数据库中为table3我的数组提供一个新值时,我希望看起来像这样:
[0] value - from table3
[1] value - from table3
[2] value - from table3
[3] value - from table3
[4] value - from table1
[5] value - from table1
[6] value - from table1
[7] value - from table1
[8] value - from table2
[9] value - from table2
[10] value - from table2
[11] value - from table2
Value/name Date Message
value/value1(T3) value2(T3) value3(T3)
value/value1(T1) value2(T1) value3(T1)
value/value1(T2) value2(T2) value3(T2)
来自table2的另一个值
[0] value - from table2
[1] value - from table2
[2] value - from table2
[3] value - from table2
[4] value - from table3
[5] value - from table3
[6] value - from table3
[7] value - from table3
[8] value - from table1
[9] value - from table1
[10] value - from table1
[11] value - from table1
Value/name Date Message
value/value1(T2) value2(T2) value3(T2)
value/value1(T3) value2(T3) value3(T3)
value/value1(T1) value2(T1) value3(T1)
我想移动myArrraylist中的元素并在html表中显示这是我想要在这个时刻为我的数据库中的三个表做,但将来我有多个表。
抱歉我的英文不好,如果不明白我会尽力解释。
答案 0 :(得分:0)
我认为您可以使用队列。
让我解释一下。如果你有一个队列(你可以做一些检查,总是有12个元素),你开始排队值,你会有这样的事情:
[11] value - from table3
[10] value - from table3
[9] value - from table3
[8] value - from table3
[7] value - from table2
[6] value - from table2
[5] value - from table2
[4] value - from table2
[3] value - from table1
[2] value - from table1
[1] value - from table1
[0] value - from table1
//First element
然后,如果你得到一个新值:
使用Dequeue()4次,你会得到这个:
[7] value - from table3
[6] value - from table3
[5] value - from table3
[4] value - from table3
[3] value - from table2
[2] value - from table2
[1] value - from table2
[0] value - from table2
//First element
然后使用Enqueue()和四个新值,你会得到类似的东西:
[11] value - from table4
[10] value - from table4
[9] value - from table4
[8] value - from table4
[7] value - from table3
[6] value - from table3
[5] value - from table3
[4] value - from table3
[3] value - from table2
[2] value - from table2
[1] value - from table2
[0] value - from table2
//First element
得到它? ;) 我认为这可以解决您的问题!
这个想法:
Queue<string> queue = new Queue<string>();
queue.Enqueue("prueba1");
queue.Enqueue("prueba2");
queue.Enqueue("prueba3");
queue.Enqueue("prueba4");
queue.Enqueue("prueba5");
queue.Enqueue("prueba6");
queue.Enqueue("prueba7");
queue.Enqueue("prueba8");
queue.Enqueue("prueba9");
queue.Enqueue("prueba10");
queue.Enqueue("prueba11");
queue.Enqueue("prueba12");
if (queue.Count == 12)
{
queue.Dequeue();
queue.Dequeue();
queue.Dequeue();
queue.Dequeue();
queue.Enqueue("prueba13");
queue.Enqueue("prueba14");
queue.Enqueue("prueba15");
queue.Enqueue("prueba16");
}
答案 1 :(得分:0)
我不会为此使用ArrayList。创建一个类来保存数据并为其提供有意义的属性名称。然后,您可以更改GetData方法,以提供这些类的集合,您可以在表示逻辑中使用这些类来填充HTML表。
可能类似以下
class AlarmData {
public float AlarmValue { get; set; }
public string AlarmN { get; set; }
public string AlarmDate { get; set; } // Could even be of type DateTime
public string AlarmText { get; set; }
}
在DebSelect
,TempSelect
和PresSelect
方法中,您有很多重复的代码。也许将很多内容移到你的GetData方法中,而不是填充arraylist创建一个AlarmData
对象的集合并返回它们。
然后,您的DebSelect
,TempSelect
和PresSelect
方法可以简单地对返回的数据执行条件逻辑。
对于DataDisplay
方法,我会调查ASP.NET Repeater Control来构建ASP.NET表或DIVS,或者您选择用于布局内容的任何方法。如果您真的想要,可以查看与自定义业务对象(AlarmData
)的数据绑定,以帮助进一步简化操作。
这与你原来的例子相差甚远,但这可能是我建议的一个值得的。