读书人

Repeater嵌套二级显示不正常(附图说明

发布时间: 2012-03-20 14:01:11 作者: rapoo

Repeater嵌套二级显示不正常(附图说明)
标题:Repeater嵌套二级显示不正常(附图说明)

描述:

大类的myNoBigClassName这一部分显示是正常的

小类的myNoSmallClassName我是参照大类的思路来做的,但是在显示的时候,总是不正常

具体效果如下:



HTML Code

<!--大类循环显示开始-->
<% if(myNoBigClassName != ""){ %>
<tr>
<td height="30" colspan="3"><%= myNoBigClassName %></td>
</tr>
<% } %>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td height="30">大类</td>
</tr>
<!--小类循环显示开-->

<% if(myNoSmallClassName != ""){ %>
<tr>
<td height="30" colspan="3"><%= myNoBigClassName %></td>
</tr>
<% } %>
[i][/i]

<asp:Repeater ID="Repeater2" runat="server" DataSource='<%# BindSub(Convert.ToInt32(Eval("InfomationBigClass_ID")))%>'>
<ItemTemplate>
<tr>
<td height="30">小类</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<!--小类循环显示结束-->
</ItemTemplate>
</asp:Repeater>
<!--大类循环显示结束-->


C# Code

public partial class InfomationClassManage : MacBase
{
protected string myNoBigClassName = null;
protected string myNoSmallClassName = null;

protected void Page_Load(object sender, EventArgs e)
{
// 数据库链接
SqlConnection myConnection = new SqlConnection(strConnection);
myConnection.Open();

// 数据库查询
string mySql = "select * from Mac_InfomationBigClass";
SqlDataAdapter myAdapter = new SqlDataAdapter(mySql,myConnection);

// 查询结果填充到DataSet数据集
DataSet mySet = new DataSet();
myAdapter.Fill(mySet);

// 用DataSet数据集绑定控件
Repeater1.DataSource = mySet;
Repeater1.DataBind();
myNoBigClassName = Repeater1.Items.Count == 0 ? "提示:您还没有添加任何信息大类!" : "";

myConnection.Close();
}

protected DataTable BindSub(int nBigClassID)
{
// 数据库链接
SqlConnection myConnection = new SqlConnection(strConnection);
myConnection.Open();

// 数据库查询
string mySql = "select * from Mac_InfomationSmallClass where InfomationBigClass_ID = @nBigClassID";
SqlDataAdapter myAdapter = new SqlDataAdapter(mySql,myConnection);

// 查询结果填充到DataSet数据集
myAdapter.SelectCommand.Parameters.AddWithValue("nBigClassID", nBigClassID);
DataSet mySet = new DataSet();
myAdapter.Fill(mySet);

// 判断是否有记录存在
if (mySet.Tables[0].Rows.Count == 0)
{
myNoSmallClassName = "提示:你还没有添加任何信息小类!";
}
myConnection.Close();
return mySet.Tables[0];
}
}


[解决办法]

C# code
// 判断是否有记录存在         if (mySet.Tables[0].Rows.Count == 0)         {             myNoSmallClassName = "提示:你还没有添加任何信息小类!";         }         myConnection.Close();         return mySet.Tables[0];
------解决方案--------------------


不知道怎么了~ 人晕晕的。问题不在 mySet 上,我看错了
[解决办法]

HTML code
<% if(myNoSmallClassName != ""){ %>     <tr>        <td height="30" colspan="3"> <%= myNoBigClassName %> </td>     </tr>     <% } %>
[解决办法]
楼主,你在用ASP的思路做ASP.NET,强烈不推荐
[解决办法]
探讨
楼主,你在用ASP的思路做ASP.NET,强烈不推荐

[解决办法]
C# code
    protected string myNoBigClassName = null;     protected string myNoSmallClassName = null;
[解决办法]
看你的图 ,123 和 456 是有下属小分类的。也就是不应该显示 提示信息。

不知道记录是否也是有呢?


[解决办法]
LZ 你先别急着测试` 我想听你把问题说细些
[解决办法]
下次脑袋不好使 可不能答题,自己郁闷到没什么。还耽误别人时间。

LZ ,对不住了。耽误了半天,我终于想明白是什么原因了

你的目的是想循环取 myNoSmallClassName

可实际上取的都是 myNoSmallClassName 最后被赋的值

不知你明白我的意思么
[解决办法]


HTML code
<% if(myNoSmallClassName != ""){ %>     <tr>        <td height="30" colspan="3"> <%= myNoBigClassName %> </td>     </tr>     <% } %>     <asp:Repeater ID="Repeater2" runat="server" DataSource=' <%# BindSub(Convert.ToInt32(Eval("InfomationBigClass_ID")))%>'>     <ItemTemplate>     <tr>        <td height="30">小类 </td>     </tr>     </ItemTemplate>     </asp:Repeater>
[解决办法]
把 FindControl("rp") 换成 FindControl("Repeater2")
[解决办法]
楼主,你还在坚持阿,我不说别的,就下面这个Page_Load没有用IsPostBack判断回传,将来修改和删除就有得你改了,我再次强调,这种ASP做法思路就有问题,奉劝你早日放弃这种思路
C# code
    protected void Page_Load(object sender, EventArgs e)     {        if (!IsPostBack)        {            // 数据库链接             SqlConnection myConnection = new SqlConnection(strConnection);            myConnection.Open();            // 数据库查询             string mySql = "select * from Mac_InfomationBigClass";            SqlDataAdapter myAdapter = new SqlDataAdapter(mySql, myConnection);            // 查询结果填充到DataSet数据集             DataSet mySet = new DataSet();            myAdapter.Fill(mySet);            // 用DataSet数据集绑定控件                     Repeater1.DataSource = mySet;            Repeater1.DataBind();            myNoBigClassName = Repeater1.Items.Count == 0 ? "提示:您还没有添加任何信息大类!" : "";            myConnection.Close();        }    } 

读书人网 >asp.net

热点推荐