Загрузка повторителя при привязке gridview в asp.net - PullRequest
0 голосов
/ 29 марта 2011

У меня есть вид сетки как это:

<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 Ответ

1 голос
/ 29 марта 2011

вы должны использовать 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();
    }

  }
}
...