在asp.net中绑定gridview时加载转发器

时间:2011-03-29 12:27:32

标签: asp.net gridview asp.net-2.0 repeater

我有这样的网格视图:

<asp:GridView ID="gv1" AutoGenerateColumns="false" BorderWidth="0" runat="server" >
   <Columns>
    <asp:TemplateField>
        <ItemTemplate>
         <span style="font-family:Tahoma; font-size:14px;">
            <u> <a href="<%#DataBinder.Eval(Container.DataItem,"ShUrl")%>">
                    <%#DataBinder.Eval(Container.DataItem,"PostTitle")%>
            </a>
            </u> 
         <br />
        </span>

             <asp:Repeater ID="rp1"  runat="server">
                     <HeaderTemplate>
                            <ul>     
                     </HeaderTemplate>
                     <ItemTemplate>
                           <li >
                            <a href="<%# Eval("TUrl")%>"> <%# Eval("TagName")%></a>
                           </li>     
                     </ItemTemplate>
                     <FooterTemplate>
                            </ul>     
                     </FooterTemplate> 
               </asp:Repeater>
        </ItemTemplate>
    </asp:TemplateField>

   </Columns>


</asp:GridView>

现在我可以加载成功的ShUrl和PostTitle。我也从数据库中带来了titleId。 像往常一样,帖子可能有几个标签。所以我想加载特定titleId的转发器。

在服务器端,我只是从数据绑定gv1。 现在如何加载titleid的标签:

我已经在服务器端编写了这个功能,可能会帮助大家指导我:

  private void LoadtagList(int titleId)
    {
     // calling DAL
        rp1.DataSource = db.GetAllTagsForPost(titleId);
        rp1.DataBind();
    }

1 个答案:

答案 0 :(得分:1)

你必须为那个

使用GridView RowDataBound事件
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
   if(e.Row.RowType == DataControlRowType.DataRow)      
{

    System.Data.DataRowView dr = (System.Data.DataRowView)e.Row.DataItem;
    if (Convert.ToString(dr["titleId"]) != "")
    {
         Repeater rp1 = (Repeater)e.Row.Findcontrol("rp1");
         rp1.DataSource = db.GetAllTagsForPost(titleId);
         rp1.DataBind();
    }

  }
}