我的网页上有一个DataList控件,其行由ItemTemplate填充。每行都有一个复选框,点击按钮后,我生成的字符串实际上是sql
查询文本。
查询从DB返回的每个结果都有10行,这些行将在另一个DataList中显示,如下所示:
<Header>
Item1: Result1
Item2: Result2
Item3: Result3
...
Item10: Result10
问题在于我不知道用户将选择多少个复选框,并且根据返回的结果数量将是未知的。 因此,如果用户从第一个DataList中选择两个复选框,则结果DataList应该有两列:
<Header1> <Header2>
Item1: Result1 | Item 1: ResultCol2
Item2: Result2 | Item 2: ResultCol2
Item3: Result3 | Item 3:ResultCol2
...
Item10: Result10 | Item 10: ResultCol2
我试着想出一个解决方案。假设用户选中了两个复选框:
foreach checkbox selected by the user
Make a new repeater. Add a new header.
Fetch the data from the database (Each result contains 10 columns) and bind to the repeater.
Add the repeater to a container on the web page.
现在,我记得在Windows窗体中,运行时生成的控件的添加可以通过TableLayout.Add(childElements)
但是,我无法想到Web窗体中的类似内容。这实际上是正确的方法吗?在这种情况下,如何实现DataControl的这种动态构建?
答案 0 :(得分:0)
如果你想得到点数。我会写一个Lambda表达式:
var selectedChkboxCount = DataList1.Items.Cast<DataListItem>().
Where(s => ((CheckBox)s.FindControl("checkboxName")).Checked).Count();