问题一:帖子分页后,楼层又从一楼开始!!
问题二:用户性别图案全都一样,是不是不能放在该模块?
问题三:楼主头像分页后不显示
问题四:除楼主以外,所有用户的等级都不显示汉字,是数据库的1、2、3
前台: <img src="<%=userhead %>" border="0" />//楼主头像<asp:DataGrid ID="mygrid" runat="server" Width="98%" AutoGenerateColumns="False" AllowPaging="True" HorizontalAlign="Center" PageSize="5" OnPageIndexChanged="mygrid_PageIndexChanged" OnItemDataBound="mygrid_ItemDataBound">
    <Columns>
                                <asp:TemplateColumn>
                                    <ItemTemplate>
                                        &nbsp;&nbsp;<%#Eval("UserName") %>&nbsp;&nbsp;&nbsp;
                                        <asp:Label ID="sex" runat="server" Text='<%#Eval("Sex") %>'></asp:Label><br />
                                        <div align="center">
                                            <img src="<%#Eval("UserHead") %>" border="0" alt="" /></div>
                                        <br />
                                        等级:<asp:Label ID="right" runat="server"><%#Eval("Right") %></asp:Label><br />
                                        积分:<%#Eval("Codes") %><br />
                                        注册:<%#Eval("RegTime") %><br />
                                        <img src="images/ip.gif" border="0" /><%#Eval("ReplyTime") %><br />
                                    </ItemTemplate>
                                    <ItemStyle Height="110px" Width="18%" />
                                </asp:TemplateColumn>//回帖用户信息
</Columns> <PagerStyle Font-Bold="False" Font-Italic="False" Font-Overline="False" Font-Strikeout="False"
   Font-Underline="False" HorizontalAlign="Right" Mode="NumericPages" />//分页部分
 </asp:DataGrid>
后台: public void BindGrid()
    {
        DataBase db = new DataBase();
        string sql = "select a.ReplyID,a.TopicID,a.IsLock,a.ReplyContent,a.UserName,a.ReplyTime,u.Sex,u.UserName,u.UserHead,u.[Right],u.Codes,u.RegTime from Replys a left outer join Users u on a.UserName=u.UserName where a.TopicID=" + id;
        SqlDataAdapter da = db.CreateDa(sql);
        DataSet ds = new DataSet();
        da.Fill(ds, "MyTable");
        mygrid.DataSource = ds.Tables["MyTable"].DefaultView;
        mygrid.DataBind();
 protected void mygrid_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
        mygrid.CurrentPageIndex = e.NewPageIndex;
        BindGrid();
    }
    protected void post1_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect("Post.aspx?BoardID=" + BoardID);
    }
    protected void mygrid_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Label lb = (Label)e.Item.FindControl("lc");
            lb.Text = "第" + (e.Item.ItemIndex + 1).ToString() + "楼";
            Label sex = (Label)e.Item.FindControl("sex");
            if (sex.Text == "女")
            {
                sex.Text = "<img id='Female' border='0' src='images/female.gif'/>";
            }
            else
            {
                sex.Text = "<img id='male' border='0' src='images/male.gif'/>";
            }
            Label lblRight = e.Item.FindControl("Right") as Label;
            if (lblRight != null)
            {
                if (lblRight.Text == "1")
                {
                    right.Text = "普通用户";
                }
                else if (lblRight.Text == "2")
                {
                    lblRight.Text = "版主";
                }
                else if (lblRight.Text == "3")
                {
                    lblRight.Text = "系统管理员";
                }
            }

解决方案 »

  1.   

    问题一:帖子分页后,楼层又从一楼开始!!
    问题二:用户性别图案全都一样,是不是不能放在该模块?
    问题三:楼主头像分页后不显示
    问题四:除楼主以外,所有用户的等级都不显示汉字,是数据库的1、2、3
    =====================================
    问题一:通过URL或者特征标识判断是否是第二页,对第二页以后进行处理,楼层是:第一页层数+每页显示层数*(当前页数-2)+当前页层数,为什么减2?因为要减去第一页及当前页,这两页可能不是楼层数都是每页显示最大楼层数;
    问题二:性别可以放在Bind的时候直接判断,如:
    <img src="<%# Eval("sex").ToString()=="男"?"images/male.gif":"images/female.gif" %>" border="0" alt="" />
    前提是你的数据库确实是用nchar(1)来存放性别的,而不是bool或者varchar(n)来存放的。
    问题三:解决办法通问题一,这也是因为没有区分第一页和其他页的问题;
    问题四:可以采用类似于问题二的解决办法或者用下一个回帖我介绍的办法。
      

  2.   


    <asp:GridView ID="gvPersonList" runat="server" AutoGenerateColumns="False">
                <Columns>
                    <asp:BoundField DataField="Id" HeaderText="编号" />
                    <asp:BoundField DataField="Name" HeaderText="姓名" />
                    <asp:TemplateField HeaderText="性别">
                        <ItemTemplate>
                            <%# Eval("Sex").ToString()=="true"?"男":"女" %>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="Age" HeaderText="年龄" />
                    <asp:TemplateField HeaderText="婚否">
                        <ItemTemplate>
                            <%# Boolean.Parse(Eval("Married").ToString())==true?"是":"否" %>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="婚否">
                        <ItemTemplate>
                            <asp:LinkButton CommandArgument='<%# Eval("Id") %>' Enabled='<%# Boolean.Parse(Eval("Married").ToString())==true?false:true %>' Text="设为结婚" runat="server" OnCommand="SetMarried"></asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>看这个:
     Boolean.Parse(Eval("Married").ToString())
    甚至,还可以在.cs中写方法,绑定的时候传参数过去,由cs中的方法返回结果回来都可以的。
      

  3.   

    <%# (DataGrid1.PageSize * DataGrid1.CurrentPageIndex) + Container.ItemIndex +1 %>
    <%# (bool)Eval("Sex")?"男":"女" %>
    点击图片看路径
    Eval("Right").ToString().Equals("1")?"":""
    使用枚举