如何生成动态标签和使用列名和值作为文本 [英] How to generate dynamic labels and use the column name and value as the text
问题描述
有什么办法,如果能够动态生成从code-背后的ASP.net页面。
Is there any way, if it is possible to dynamically generate the ASP.net page from code-behind.
例如:
ASP.net:
<div class="hidOverflow setFloatL smallPadLeft" style="width: 45%" runat="server" id="dvLeft">
</div>
<div class="hidOverflow setFloatL smallPadLeft" style="width: 45%" runat="server" id="dvRight">
</div>
code-背后:
Code-behind:
using (SqlConnection conn = new SqlConnection(gloString))
{
try
{
strQuery = @"";
SqlDataAdapter da = new SqlDataAdapter(strQuery, conn);
DataSet myDataSet = new DataSet();
da.Fill(myDataSet);
//dynamically generate label with the SQL column name as the Text
//dynamically generate label with the SQL column value as the text
//<div class="hidOverflow smallPad">
//<div class="setFloatL halfWidth vertAlignT">
//<span class="profileLabel">{SQL COLUMN NAME}</span>
//</div>
//<div class="setFloatL vertAlignT">
//<asp:Label ID="lbl1" ClientIDMode="Static" runat="server" Text="{SQL COLUMN VALUE}"></asp:Label>
//</div>
//</div>
//.. more .. stop at the 1/2 mark of the count for the dataset and add it to the "dvLeft" div
// STOP...
//dynamically generate label with the SQL column name as the Text
//dynamically generate label with the SQL column value as the text
//<div class="hidOverflow smallPad">
//<div class="setFloatL halfWidth vertAlignT">
//<span class="profileLabel">{SQL COLUMN NAME}</span>
//</div>
//<div class="setFloatL vertAlignT">
//<asp:Label ID="lbl1" ClientIDMode="Static" runat="server" Text="{SQL COLUMN VALUE}"></asp:Label>
//</div>
//</div>
//.. more .. continue from the 1/2 mark of the count for the dataset and add it to the "dvRight" div
}
catch (SqlException)
{
}
}
我期待使其动态的,所以我所要做的就是改变SQL查询和标签也将相应产生的。
I am looking to make it dynamic so all I have to do is change the SQL query and the labels will be generated accordingly.
我最有可能使用 ASP:直放站
控件去实现它。
I can most likely use a asp:Repeater
control to achieve it?
推荐答案
您可以尝试中继绑定到DataTable ColumnCollection:
You could try binding the repeater to the Datatable ColumnCollection:
private DataTable _dataTable;
public void LoadRepeater()
{
//load dataset
_dataTable = myDataSet.Tables[0];
repeater.DataSource = _dataTable.Columns;
repeater.DataBind();
}
public string GetColumnValue(string columnName)
{
return _dataTable.Rows[0][columnName].ToString();
}
然后在转发器:
<ItemTemplate>
<div class="hidOverflow smallPad">
<div class="setFloatL halfWidth vertAlignT">
<span class="profileLabel"><%# Eval("ColumnName") %></span>
</div>
<div class="setFloatL vertAlignT">
<asp:Label ID="lbl2" ClientIDMode="Static" runat="server" Text='<%# GetColumnValue(Eval("ColumnName")) %>'></asp:Label>
</div>
</div>
</ItemTemplate>
此,如果你对你的数据表中的一行,虽然才有效。
This will only work if you have a single row on your DataTable though.
如果您有更多的行,您可能需要包括行维度额外的中继器。
If you have more Rows, you may have to include an additional repeater for the row dimension.
要拆分栏,你可以做这样的事情(未经测试):
To Split the columns, you could do something like this (untested):
private void LoadRepeater()
{
//load dataset
_dataTable = myDataSet.Tables[0];
int columnCount = _dataTable.Columns.Count;
int half = (int)columnCount/2;
var columnCollection = _dataTable.Columns.OfType<DataColumn>();
var firstHalfColumns = columnCollection.Take(half);
var secondHalfColumns = columnCollection.Skip(half);
repeater1.DataSource = firstHalfColumns;
repeater1.DataBind();
repeater2.DataSource = secondHalfColumns;
repeater2.DataBind();
}
这篇关于如何生成动态标签和使用列名和值作为文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!