我有一个查询,它从MS Access中的表中提取值
SELECT
tblInstructor.InstructorID,
tblInstructor.Football AS InstructorRole,
tblInstructor.Gym AS InstructorRole,
tblInstructor.Yoga AS InstructorRole
FROM
tblInstructor
WHERE
tblInstructor.InstructorID = @InstructID
OR tblInstructorRole.Football = 1
OR tblInstructorRole.Gym = 1
OR tblInstructor.Yoga = 1
然后我将数据绑定到gridview
在我的aspx页面中,我使用以下方法在gridview中构建我的列
<asp:TemplateField HeaderText="Instructor ID">
<ItemTemplate >
<asp:Label ID="lblInstructorID" runat="server" Text='<%# Eval("InstructorID") %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
我遇到的问题是我收到了多次返回的错误,但是每个教师只有一个角色,所以我试图获得教师的角色,即取决于是否使用我上面的sql语句是真的然后使用教师角色
设置讲师角色列 <asp:TemplateField HeaderText="Instructor Role">
<ItemTemplate >
<asp:Label ID="lblInstructRole" runat="server" Text='<%# Eval("InstructorRole") %>' >
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
我的桌子有3个单独的领域,用于教练角色足球,健身房,瑜伽,这是教练时间表中的真/假值。我一直在尝试(没有运气)在gridview中获取列InstructorRole来显示他们角色的文本,即足球
我还试图做以下事情:
If myReader(3) = True then
Dim Role1 As String = DataBinder.Eval(e.Item.DataItem,"InstructorRole")
Role1 = "Football"
elseif myReader(4) = true then
Dim Role2 As String = DataBinder.Eval(e.Item.DataItem,"InstructorRole")
Role1 = "Gym"
如果有人可以告诉我该怎么做,我似乎无法弄清楚这一点。
答案 0 :(得分:2)
您必须在SQL查询中使用Case语句。您的最终查询将如下所示:
SELECT
tblInstructor.InstructorID,
(case when tblInstructor.Football = 1 then tblInstructor.Football
case when tblInstructor.Gym = 1 then tblInstructor.Gym
case when tblInstructor.Yoga = 1 then tblInstructor.Yoga
else '' END) as InstructorRole
FROM
tblInstructor
WHERE
tblInstructor.InstructorID = @InstructID
答案 1 :(得分:0)
如果您无法修改SQL查询,可以使用Linq在代码中执行此操作,具体内容如下:
var results = from p in [query results]
select new {
// other columns you need
InstructorRole = formatRole(p.IsFootball, p.IsGym, p.IsYoga )
}
和formatRole
功能非常简单
private string formatRole(bool football, bool gym, bool, yoga){
if( football )
return "Football";
else if( gym )
return "Gym";
else if( yoga )
return "Yoga";
else
// whatever the appropriate thing is, return "N/A" or throw an exception, up to you really.
}
然后,您可以将网格数据绑定到results
集合。