用于处理名称 - 值数据的ASP.NET(webforms)控件

时间:2009-12-11 21:56:49

标签: c# asp.net webforms

我有一个ASP.NET webforms站点,主要用于管理数据。其中一个表基本上有名称/值(字符串/字符串)数据(没有类型信息,只有字符串)。

我想创建一个页面,可以动态加载每个记录的控件表(带有名称的标签,字符串/ nubmer的TextBoxes,或者值为“true”的CheckBoxes)或“假” - 我会假设它是布尔值。)

是否有任何内置控件可以轻松完成此操作?如果不是 - 如果我想将标签和TextBoxes / CheckBoxes动态加载到要显示的集合中,那么用于集合的控件(例如DataGrid,Repeater等)将是什么好的

4 个答案:

答案 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可以位于用户控件内。