我有一个ASP.NET webforms站点,主要用于管理数据。其中一个表基本上有名称/值(字符串/字符串)数据(没有类型信息,只有字符串)。
我想创建一个页面,可以动态加载每个记录的控件表(带有名称的标签,字符串/ nubmer的TextBoxes,或者值为“true”的CheckBoxes)或“假” - 我会假设它是布尔值。)
是否有任何内置控件可以轻松完成此操作?如果不是 - 如果我想将标签和TextBoxes / CheckBoxes动态加载到要显示的集合中,那么用于集合的控件(例如DataGrid,Repeater等)将是什么好的
答案 0 :(得分:2)
查看属性网格:http://propertygrid.codeplex.com/
它是第三方(虽然是免费/开源),但它对于名称/价值类型的东西非常方便。
答案 1 :(得分:1)
我更喜欢使用标准的ASP.Net ListView控件,主要是因为它不比Repeater控件复杂得多,但ListView可以支持数据分页。但是,如果您需要能够按列对结果进行排序,则可能需要查看GridView控件。
答案 2 :(得分:1)
您可以使用类似的东西动态构建列表。如果该值看起来像使用TryParse的bool,则呈现CheckBox,否则它将值放入TextBox。
foreach (var item in data)
{
var controls = ListPlaceholder.Controls;
// Add the label
var label = item.Key;
controls.Add(new LiteralControl(label));
var value = item.Value.ToString();
bool boolVal;
if (bool.TryParse(value, out boolVal))
{
// Looks like a bool so render CheckBox
controls.Add(new CheckBox { Checked = boolVal });
}
else
{
// General data so render TextBox
controls.Add(new TextBox { Text = value });
}
// Line break
controls.Add(new LiteralControl("<br />"));
}
答案 3 :(得分:0)
尝试DataList控件。它为您提供了很多格式化的灵活性。 如果您看到它在任何地方都被使用,您也可以编写用户控件。事实上,如果可重用性很重要,那么您的DataList可以位于用户控件内。