我有一个表会有一些固定的列,然后是很多动态的表,具体取决于轴的结果。
所以这很好用:
@{
var db = Database.Open("STUDENT");
var TeacherID = 15313;
var selectCommand = "PBIS_ReviewBehaviors @0, @1";
var selectedData0 = db.Query(selectCommand, TeacherID, 0);
var grid0 = new WebGrid(source: selectedData0, rowsPerPage: 30);
List<WebGridColumn> cols0 = new List<WebGridColumn>();
}
然后身体:
<div>
@grid0.GetHtml(
tableStyle: "grid",
headerStyle: "head",
alternatingRowStyle: "alt"// ,
// columns: cols
)
</div>
但是我真的希望能够使用我的一些固定列来做一些具体的事情 - 为了做到这一点,我需要知道谁在Data0或Grid0中获取列名,那么我可以建立一个名为cols并使用它:
类似
foreach (column name in my grid)
{
if column name = "StudentID"
cols0.Add(grid0.column( format: @<a href="~/InsertStudent?StudentID=@item.StudentID">Details</a> );
else
cols0.Add(grid0.column( the column name );
}
唉,我对.net很新,不知道如何获取我的列名列表,然后专门使用它们。我希望用我的意图使伪代码清晰。
答案 0 :(得分:0)
您可以通过GetDynamicMemberNames方法获取数据库查询返回的列。
foreach(var item in selectedData0.First().GetDynamicMemberNames()){
// assumes that the query will always return at least one row
// will throw an exception if not
// 'item' represents the column name
}
答案 1 :(得分:0)
可行的解决方案是:
try
{
foreach(var i in selectedData0.First().GetDynamicMemberNames() )
{
if(i == "StudentID") {
cols0.Add(grid0.Column(format: @<a href="~/DetailStudent?StudentID=@item.StudentID">Details</a>) );
}
else {
cols0.Add(grid0.Column(i.ToString()) );
}
}
}
catch {}
这取代了我的第一列,其中包含指向另一个页面的链接,并将其余部分保持为动态返回的内容。因为可能没有返回任何行,所以我放入了try / catch。