书籍父类别和子类别的显示

原理:前台两个 DataList 的嵌套

<!-- 放置DataList数据控件  -->
         <asp:DataList ID="ParentCaption" runat="server" RepeatDirection="Vertical" onitemdatabound="ParentCaption_ItemDataBound">
         <ItemTemplate>
           <div style=" height:20px; width:185px; background-color:#f0f0f0;font-weight:bold; ">
             [&nbsp;<%# Eval("Type_Name")%>&nbsp;]
           </div>           
           
          <!-- 子标题  -->   
          <asp:DataList ID="SonCaption" runat="server" RepeatDirection="Horizontal" RepeatColumns="2">
          <ItemTemplate>
            <div style="margin-left:20px; list-style-type:none;">
              <a href='<%# "SortBooks.aspx?TypeID="+Eval("Type_ID") %> '>
                  <asp:Label ID="Label1" runat="server" Text='<%# Eval("Type_Name")%> '></asp:Label> </a>
            </div>      
           </ItemTemplate>
          </asp:DataList>
         </ItemTemplate>
        </asp:DataList>
<!-- 放置DataList数据控件  -->  


后台对两个 DataList 进行绑定:
   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            bindParentType();
        }
    }

    private void bindParentType()
    {
        DataSet ds = new DataSet();
        if (this.Cache["Type_Name"] == null)
        {
            BLL.BookCategory bookType = new BLL.BookCategory();
            ds = bookType.GetList("");
            this.Cache.Insert("Type_Name", ds, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);
        }
        else
        {
            ds = (DataSet)this.Cache["Type_Name"];
        }
        DataRow[] darow = ds.Tables[0].Select(" Type_FatherTypeID is null");
        DataTable dt = ds.Tables[0].Clone();
        foreach (DataRow dr in darow)
        {
            dt.ImportRow(dr);
        }
        this.ParentCaption.DataSource = dt;
        this.ParentCaption.DataKeyField = "Type_ID";
        this.ParentCaption.DataBind();
    }

    //在父级 DataList 内找子级 DataList 控件
    protected void ParentCaption_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        DataList dl2 = (DataList)e.Item.FindControl("SonCaption");
        int parentID = Convert.ToInt32(this.ParentCaption.DataKeys[e.Item.ItemIndex].ToString());

        DataSet ds = (DataSet)this.Cache["Type_Name"];
        DataRow[] dro = ds.Tables[0].Select(" Type_FatherTypeID=" + parentID);
        DataTable dt = ds.Tables[0].Clone();
        foreach (DataRow dr in dro)
        {
            dt.ImportRow(dr);
        }
        dl2.DataSource = dt;
        dl2.DataBind();
    }

当你在 LaTeX 文档引用参考文献时,可能会遇到某些类别(比如期刊文章、书籍、在线资源等)无法正常显示的情况。这通常是因为没有正确设置参考文献样式文件(`.bst`),或者是在 `.bib` 文件使用的关键词与样式文件期望的格式不符。 以下是可能出现问题的一些原因及解决办法: 1. **缺少合适的.bst文件**:LaTeX默认使用`plainnat`或`unsrt`样式,如果你使用的是自定义的数据库字段,例如`journaltitle`代替`journal`, 需要找到对应的.bst文件(如`authoryear.bst`或`naturemag.bst`)。确保将这个文件放在与`.tex`文件相同的目录下,或者通过`\bibliographystyle{<风格名>}`命令指定正确的样式。 2. **`.bib`文件格式错误**:检查`.bib`文件的条目是否按照正确格式编写,每个条目的关键词(如`article`, `book`, `online`)应对应于特定类型。如果不确定格式,可以查阅相关的LaTeX BibTeX教程。 3. **样式文件未识别的字段**:有些字段可能需要在.bst文件特别处理才能正确显示。例如,如果你有一个包含电子书信息的条目,可能需要修改对应的.bst文件以支持这种类型的引用。 4. **文档结构问题**:有时候,参考文献只会在文档最后自动插入,如果你在文提前使用了`\cite`命令而没有正确引入`\printbibliography`, 可能会导致部分参考文献未能显示。 5. **编译问题**:确认使用的是正确的LaTeX引擎(如pdflatex, lualatex, xelatex),因为不同的引擎可能对.bib文件的处理略有差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值