2009-12-11 24 views
0

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

我想制作一个页面,它可以动态地为每个记录加载一张控制表(带有名称标签,文本框用于字符串/ nubmer,或CheckBoxes用于值为“true “或”假“ - 我会假设它是布尔型的。)

是否有任何内置的控件可以轻松地做到这一点?如果不是 - 如果我想动态加载标签和文本框/复选框到要显示的集合中,什么是一个好的控件用于集合(例如DataGrid,Repeater等)

回答

0

尝试DataList控件。它为您提供了很多格式化的灵活性。 如果你看到它在任何地方都被使用,你也可以编写一个用户控件。实际上,如果可重用性很重要,那么您的DataList可以位于用户控件内。

1

我更喜欢使用标准的ASP.Net ListView控件,主要是因为它不比Repeater控件复杂得多,但ListView可以支持数据分页。但是,如果您需要按列排序结果,则可能需要查看GridView控件。

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 />")); 
} 
+0

这就是我在想什么。我希望能有一个很好的方法来做到这一点,但这很简单,容易理解 – 2009-12-11 22:23:04