2013-05-06 73 views
0

首先ASPcode,下面的問題描述。如何將運行時控件添加到Gridview?

<asp:GridView ID="GridViewContacts" runat="server" ForeColor="#333333" DataKeyNames="L_ID_CONTACT" AllowPaging="True" AllowSorting="True" 
       OnPageIndexChanging="GridViewContacts_PageIndexChanging" PageSize="25" AutoGenerateColumns="False" OnRowCommand="GV_Contacts_RowCommand" > 
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
        <Columns> 
         <asp:TemplateField HeaderText="Edit"> 
          <ItemTemplate> 
           <asp:LinkButton ID="LinkButtonEdit" runat="server" CommandArgument="Edit" CommandName="Edit" Text="Edit">Edit</asp:LinkButton> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="View"> 
          <ItemTemplate> 
           <asp:LinkButton ID="LinkButtonView" runat="server" CommandArgument="View" CommandName="View" Text="View">View</asp:LinkButton> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Name"> 
          <ItemTemplate> 
           <asp:Label ID="L_Name" runat="server" Text='<%# Eval("L_Name") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Companydetails"> 
          <ItemTemplate> 
           <asp:Label ID="L_Companydetails" runat="server" Text='<%# Eval("L_Companydetails") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="EMail"> 
          <ItemTemplate> 

          </ItemTemplate> 
         </asp:TemplateField> 

         <asp:TemplateField Visible="False" HeaderText="ID_CONTACT" > 
          <ItemTemplate> 
           <asp:Label Visible="false" ID="L_ID_CONTACT" runat="server" Text='<%# Eval("L_ID_CONTACT") %>' /> 
          </ItemTemplate> 
         </asp:TemplateField>        
        </Columns>       
        <%-- //Stylesettings here--%> 
       </asp:GridView> 

好,然後在代碼隱藏我有一個選擇從我的數據庫,在那裏我選擇ID_Contact,名稱,Companydetails,可以是1元的行只。 在RowCreated事件上,我得到了實際用戶的UserID,並選擇了用戶擁有的所有電子郵件,每行可以爲0-10。 現在我的問題是: 我如何插入Linkbuttons的onClick事件的描述到我的代碼的這一部分? 像這樣:

     <asp:TemplateField HeaderText="EMail"> 
          <ItemTemplate> 
           <asp:LinkButton[i] runat="server" onClick="SendEmail"> 
           </asp:Linkbutton[i]> 
           <asp:LinkButton[i] runat="server" onClick="SendEmail"> 
           </asp:Linkbutton[i]> 
          </ItemTemplate> 
         </asp:TemplateField> 

所以我想用代碼添加這些controlls到這個模板列。 這可能嗎?

想到我已經有: This.GridViewContacs.Controlls.AddAt(index,Linkbutton) 但也沒有線索這裏應該如何工作。

由於提前,

回答

1

最簡單的是一個佔位符控件添加到ItemTemplate中,作爲ItemTemplate中沒有ID。

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:PlaceHolder ID="emails" runat="server"></asp:PlaceHolder> 
    </ItemTemplate> 
</asp:TemplateField> 

,然後在RowDataBound事件

if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    PlaceHolder emails = e.Row.FindControl("emails") as PlaceHolder; 

    if (emails != null) 
    { 
     LinkButton lbEmail = new LinkButton(); 
     lbEmail.Text = "your text"; 
     lbEmail.Click += new EventHandler(SendEmail); 

     emails.Controls.Add(lbEmail); 
    } 
} 

當然,例如被簡化。您可以輕鬆地將其擴展至您的需求。

+0

感謝您的回答,我會盡快測試它:) – DatRid 2013-05-07 08:13:54

+0

作品,非常感謝;)擴展它的高招,這個例子很好。 – DatRid 2013-05-07 12:45:30

相關問題