整容说文库 > 程序代码 > 教育资讯

显示日志总数的问题

来源:学生作业帮助网 编辑:整容说文库 时间:2021/06/18 09:48:36 程序代码
显示日志总数的问题程序代码
存储过程:with temptb as( 
select t.id,t.name,count (te.id)as textCount from teacher t,textcategory tc,[text] te
where t.id=tc.teacherid and te.caid=tc.id
group by t.id,t.name
)
SELECT teacher.name,teacher.id,temptb.textCount
FROM teacher LEFT JOIN temptb ON teacher.id=temptb.id
取出用户名,用户id,还有该用户的日志数
在aspx页面
<asp:DataList ID="dlteacher" runat="server" 
onitemdatabound="DataList1_ItemDataBound">
<ItemTemplate>
<tr>
<td class="biaoti"><a href="/web/Default.aspx?teacherid=<%# Eval("id")%>"><%# Eval("name")%></a> </td>
<td><%# Eval("textCount")%></td>
</tr>
</ItemTemplate>
</asp:DataList>
这样写的话网页上能显示日志数,但是没有日志的话就什么也不显示,我想有显示0

于是我尝试着
<asp:DataList ID="dlteacher" runat="server" 
onitemdatabound="DataList1_ItemDataBound">
<ItemTemplate>
<tr>
<td class="biaoti"><a href="/web/Default.aspx?teacherid=<%# Eval("id")%>"><%# Eval("name")%></a> </td>
<td><%=count%></td>
</tr>
</ItemTemplate>
</asp:DataList>
CS页面: 
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)

DataRowView row = (DataRowView)e.Item.DataItem;
if (row["textCount"] == DBNull.Value)
{
count = "0";
}
else
{
count = row["textCount"].ToString();
}
}

}
可是这样日志数就全0了,有什么解决方法啊让日志总数零的地方显示0 

没 看懂。。。
可是感觉好像没什么难度的说。。。
没难度咋还没看懂啊,字数太多没人要看啊....
于是我尝试着
<asp:DataList ID="dlteacher" runat="server" 
onitemdatabound="DataList1_ItemDataBound">
<ItemTemplate>
<tr>
<td class="biaoti"><a href="/web/Default.aspx?teacherid=<%# Eval("id")%>"><%# Eval("name")%></a> </td>
<td><%=count%></td>
</tr>
</ItemTemplate>
</asp:DataList>


这里的<td><%=count%></td>
改成<%if(string.IsNullOrEmpty(count)){%>
        <td>0</td>
    <%}else{%>
        <td><%=count%></td>
    <%}%>
自己设个断点调试一下。。。这台电脑上没装软件。。没法给你试。。

看上去倒是没什么问题。。。。

你可以换一种方式。。。别在ItemDataBound中判断。。。

直接后台写一个object参数的方法。。。返回int值。。再前台显示处调用这方法。。
位置说错了,但方法是一样的,
应该是上面那段里面的
<td><%# Eval("textCount")%></td>
这样显示的是全0,呵呵
断点dt.rows【0】【2】也就是第一个用户的日志总数是2
dr.rows【1】【2】是{}应该是空吧,可是网页上就是不显示0的要怎么样才能把{}变成0啊
在页面类里。。你count在哪里声明的?

在4楼说的那种方法有试过吗?
试过了就是全显示0了,public partial class superAdmin_ListBloger : System.Web.UI.Page
{
    protected string count = "";
    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dt = new TeacherManager().SelectTeacherTextCount();
        dlteacher.DataSource = dt;
        dlteacher.DataBind();
       
        

    }
    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataRowView row = (DataRowView)e.Item.DataItem;
            count = row["textCount"].ToString();
            //if (row["textCount"] == DBNull.Value)
            //{
            //    count = "0";
            //}
            //else
            //{
            //    count = row["textCount"].ToString();
            //}
        }

    }
}
写在最上面了count
aspx页面:    <asp:DataList ID="dlteacher" runat="server" >
    <ItemTemplate>
    <tr>
   <td class="biaoti"><a href="/web/Default.aspx?teacherid=<%# Eval("id")%>"><%# Eval("name")%></a> </td>
<%if(string.IsNullOrEmpty(count)){%>
<td>0</td>
<%}else{%>
<td><%=count%></td>
<%}%>
   </tr>
   </ItemTemplate>
    </asp:DataList>
该怎么做啊.......
后台写一方法
public static int GetCount(object count)
{
  在这里面判断返回数量int值
}

前台
<%# GetCount(Eval("查出来的数量"))%>
不会写额,那个count是每一条记录的啊,不用DataList1_ItemDataBound这个怎么获得啊
还没试好?

我睡了。。。为了更好的迎接明天淫/荡的一天。。。。

你自己试试吧。。。这绝对是个没有难度的问题
isnull(count(te.id),0)
没有难度都没人帮忙啊........
引用 13 楼 somnus2009 的回复:
不会写额,那个count是每一条记录的啊,不用DataList1_ItemDataBound这个怎么获得啊


你ID绑定是
<%# Eval("id")%>

那你如果绑定数量。。。应该也有个
<%# Eval("数量字段名")%>把这个在前台当一个参数传方法里去。。

楼上的看不懂额,本人刚学啦
或在datalist 中绑定用户
<%# A((int)Eval("id"))%>
public int A(int Id)
{
}
查询用户日志数
引用 15 楼 wuyq11 的回复:
isnull(count(te.id),0)

?????
指定的转换无效。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.InvalidCastException: 指定的转换无效。

源错误: 


行 12:     <tr>
行 13:    <td class="biaoti"><a href="/web/Default.aspx?teacherid=<%# Eval("id")%>"><%# Eval("name")%></a> </td>
行 14: <td><%# GetCount((int)Eval("textCount"))%>
行 15: </td>
行 16:    </tr>
 
这样都错啊
<%# GetCount(Eval("textCount"))%>

后台方法是object的。。你前台强转做什么类?
引用 22 楼 porschev 的回复:
<%# GetCount(Eval("textCount"))%>

后台方法是object的。。你前台强转做什么类?

 public static int GetCount(object count)
    {
        int i = 0;
        string str = count.ToString();
        if (str==""||str==null)
        {

        }
       

    }
写了一半实在写不来555,判断是不是等于{}怎么写写啊,还有类型转换的,你就帮我写写吧
string.isnullorempty(str)
{
   i= 0;
}
else
   i = convert.toint32(str);

return i;

没软件。。手写。。不保证全对啊。。。呵呵。。
可以了,厉害厉害没软件单词也写的出来
引用 25 楼 somnus2009 的回复:
可以了,厉害厉害没软件单词也写的出来


终于可以了?。。我可以睡了噢。。呵呵。。

方法有好多种。。结帖给分吧。。哈哈。。为了这四十分。。不容易啊。。
呵呵,可以睡觉了~结贴结贴!!!
程序代码