首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Repeater嵌套二级显示不正常(附图说明),该怎么解决

2012-03-20 
Repeater嵌套二级显示不正常(附图说明)标题:Repeater嵌套二级显示不正常(附图说明)描述:大类的myNoBigClas

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();        }    } 

热点排行