c# - SQL 用户类型问题

标签 c# sql asp.net sql-server gridview

我使用了一个SQL 查询 来定义表中用户的角色。例如:-

1 -- super 管理员

2 -- 管理员

3 -- 用户

在 gridview 中我想将文本显示为 Super Admin , Admins 但我仍然得到 0, 12

请帮忙

代码:-

SELECT (
        CASE WHEN usertype =1 THEN 'Admin' 
              WHEN usertype=0 THEN 'Super Admin' 
              WHEN usertype=2 THEN 'User' END ) aS usertype 
FROM tbl_User

Gridview aspx代码:-

<asp:GridView ID="grdUser" AllowPaging="true" AutoGenerateColumns="False"
            OnDataBound="grdUser_DataBound" OnRowDeleting="grdUser_RowDeleting"
            OnPreRender="PreRenderGrid" runat="server" Width="100%"
            border="1" DataKeyNames="Id" PageSize="2"
            OnPageIndexChanging="grdUser_PageIndexChanging"
            EnableSortingAndPagingCallbacks="false"
            CssClass="pagi" OnRowCommand="grdUser_RowCommand">
            <Columns>
                <asp:BoundField DataField="username" HeaderText="UserName" 
                         ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td">
                    <HeaderStyle CssClass="k-grid td"></HeaderStyle>
                    <ItemStyle Width="30px"></ItemStyle>
                </asp:BoundField>
                <asp:BoundField DataField="usertype" HeaderText="UserType" 
                           ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td">
                    <HeaderStyle CssClass="k-grid td"></HeaderStyle>
                    <ItemStyle Width="30px"></ItemStyle>
                </asp:BoundField>                    
            </Columns>
 </asp:GridView>

最佳答案

在 Grid 事件 RowDatabound 下,您必须处理这个,否则您的 SQL 查询将返回 RoleDescription 以及 roleID,然后将其绑定(bind)到 Grid 上

对于 RowDataBound 事件:-

protected void ctrlGrid_ItemDataBound(object sender, GridItemEventArgs e)
  {
     //add three case like this
    if (dataBoundItem["usertype"].Text == "1")
     Label lblUserType = (dataBoundItem["UserType"].FindControl("lblUserType") as Label);
     lblUserType.Text = "Admin";

 }

编辑:-

根据您的 sql 查询,我必须说更改您的别名并添加单引号

SELECT Id,username,email,usertype,active, 
CASE WHEN usertype ='1' THEN 'Admin' 
WHEN usertype='0' THEN 'Super Admin' 
WHEN usertype='2' THEN 'User' END ) AS usertypeDescription 
from tbl_User ORDER By Id DESC

然后改变

 <asp:BoundField DataField="usertypeDescription" HeaderText="UserType" 
                       ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td">
    <HeaderStyle CssClass="k-grid td"></HeaderStyle>
       <ItemStyle Width="30px"></ItemStyle>
 </asp:BoundField>

关于c# - SQL 用户类型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863113/

相关文章:

c# - 我应该什么时候处理数据上下文

javascript - 如何在浏览器关闭之前保留用户名?

c# - 有没有办法在不使用 JsonIgnore 属性的情况下忽略 Json.NET 中的 get-only 属性?

mysql - 在第 3 列的基础上选择 2 个匹配的列

c# - 使用 C# 在 asp.net 中排序列表和下拉列表

c# - 使用 Oracle DB 和 .NET 时的最佳实践

c# - 我可以将 TcpClient 从一台服务器传递到另一台服务器吗?

android - 应用程序从 SQL 数据库读取信息 : required/optional classes and methods?

sql - 错误 : syntax error at or near "modify" - in postgres

c# - 使用 FileHelpers 从 asp.net 文件上传读取 CSV 文件