日期:2014-05-18  浏览次数:20777 次

GetUsersMSGDataGrid_ItemDataBound方法执行问题,没有显示想要的文本
新手!
在datagrid中有用户权限列(模板列),值为0,1,想让其显示为普通用户和管理员。
定义了如下方法:
C# code
private void GetUsersMSGDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        {
            //string tmp = e.Item.Cells[5].Text;
            
            for(int i=0;i<GetUsersMSGDataGrid.Items.Count;i++) 
            { 
                string tmp = GetUsersMSGDataGrid.Items[i].Cells[5].Text;
                if(GetUsersMSGDataGrid.Items[i].Cells[5].Text=="0")
                    GetUsersMSGDataGrid.Items[i].Cells[5].Text = "普通用户";
                else
                    GetUsersMSGDataGrid.Items[i].Cells[5].Text = "管理员";     
            } 
        }

结果:全都变成了管理员。
设断点看了下:
tmp=“权限”————————————————页眉
tmp=null——————————————————以下都是“null”
显示也就都成了管理员。
注释掉GetUsersMSGDataGrid_ItemDataBound方法,0,1值和数据库中一致。
前台部分:
HTML code
<asp:TemplateColumn HeaderText="权限">
                                                                    <ItemTemplate>
                                                                        <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.UserType")%>'>
                                                                        </asp:Label>
                                                                    </ItemTemplate>
                                                                    <EditItemTemplate>
                                                                        <asp:DropDownList runat="server" SelectedIndex='<%# GetUserTypeIndex(DataBinder.Eval(Container.DataItem, "usertype").ToString()) %>' id="edit_usertype">
                                                                            <asp:ListItem Value="0">普通用户</asp:ListItem>
                                                                            <asp:ListItem Value="1">管理员</asp:ListItem>
                                                                        </asp:DropDownList>
                                                                    </EditItemTemplate>

为什么是null?
问题出在哪了?各位先贤烦请解惑,拜谢!

------解决方案--------------------
C#是区分大小写的哦。
还有就是直接在eval里可直接判断<%# IIf(Eval("UserType").ToString() = "0", "普通用户", "管理员")%>
未经测试,凭印象。:)