0

まずはASPコード、問題を以下に記述。

<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>

さて、CodeBehind には、データベースからの Select があります。ここで、ID_Contact、Name、Companydetails を選択します。これは行ごとに 1 つだけです。RowCreated イベントで、実際のユーザーの UserID を取得し、ユーザーが持っているすべての電子メールを選択します。行ごとに 0 ~ 10 にすることができます。今私の問題は次のとおりです:説明に onClick イベントを含む Linkbuttons をコードのこの部分に挿入するにはどうすればよいですか? このような:

                        <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>

したがって、これらのコントロールをコードで THIS TemplateField に追加したいと思います。これは可能ですか?

私はすでに持っていた考え: This.GridViewContacs.Controlls.AddAt(index,Linkbutton) しかし、それがどのように機能するかについてもここでは手がかりがありません。

前もって感謝します、

自分

4

1 に答える 1

1

ItemTemplate には ID がないため、プレースホルダー コントロールを ItemTemplate に追加するのが最も簡単です。

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

もちろん、例は単純化されています。必要に応じて簡単に拡張できます。

于 2013-05-06T14:47:29.287 に答える