2017-02-03 11 views
0
<asp:Panel id="contactsListContainer" runat="server"> 
     <asp:Repeater ID="contactsListRepeater" runat="server"> 
      <ItemTemplate> 
       <asp:Panel CssClass="contactsList" ID="contactList" runat="server" OnClick="contactLink_Click" CommandArgument='<%# ((AddressBook.Employee)Container.DataItem).Id %>' CausesValidation="false"> 
        <asp:Label ID="lblContactName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'></asp:Label> 
        <asp:Label ID="lblContactEmail" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Email") %>'></asp:Label> 
        <asp:Label ID="lblContactMobile" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "MobileNumber") %>'></asp:Label> 
       </asp:Panel> 
      </ItemTemplate> 
     </asp:Repeater> 
    </asp:Panel> 

連絡先パネルのonclickイベントを追加したいと思います。どのように私はそれを追加することができます。リピーター内にあるパネルのOnClickイベント

これは、パネルをクリックしたときに実行されるコードです。

protected void contactLink_Click(object sender, EventArgs e) 
    { 
     contactsForm.Style.Add("display", "none"); 
     detailsContainer.Style.Add("display", "block"); 
     LinkButton btn = (LinkButton)sender; 
     SelectEmpId = int.Parse(btn.CommandArgument); 
     LinkButton contactListLinkButton = getSelctedLinkButton(); 
     contactListLinkButton.Style.Add("background-color", "#CEE7F2"); 
     Employee employee = GetEmployee(SelectEmpId); 
     lblDetailName.Text = employee.Name; 
     lblDetailAddress.Text = employee.Address; 
     lblDetailMobile.Text = employee.MobileNumber; 
     lblDetailLandline.Text = employee.LandLineNumber; 
     lblDetailEmail.Text = employee.Email; 
     lblDetailWebsite.Text = employee.Website; 
     lblDetailAddress.Text = employee.Address; 
    } 

答えて

0

Asp.NET PanelにはOnClickイベントはありませんが、代わりにこれを試してみてください。

をあなたはこのソリューションを参照することができます:https://stackoverflow.com/a/20540854/4779385

はそれが役に立てば幸い!

+0

同じクライアント側IDを持つ複数の項目があり、jQueryセレクタが機能しないため、この例のようにリピータ内では機能しません。 – sh1rts

+0

はいそれは仕事がありません – Sravani

+0

うん、数字。しかし、それを更新しました。 – mindOfAi

0

<asp:Panel>には、処理できるClickイベントがありません。

おそらく行うには、いくつかのCSSの仕事を持っていますが、良い方法は、あなたがHTMLアンカー内のサーバー・クリッカブルにしたいコンテンツをラップすることです、つまり

<a id="anchor" runat="server"> 
    .. your stuff 
</a> 

あなたがクリックさハンドラを追加することができますリピーター/グリッドのItemDataBoundイベント内のアンカー、およびcontactLink_Clickハンドラーを指定すると、リピーター/グリッド内のすべてのアンカー/パネルのイベントを処理できます。あなたから正しい子コントロールにドリルダウンできるようsenderは、クリックイベントを発生させたアンカーになることを

(この例では、リピーターからのもので、GridViewコントロールのためにそれを適応させる)

void contactsListRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    var item = e.Item; 

    if (item.ItemType == ListItemType.AlternatingItem || item.ItemType == ListItemType.Item) 
    { 
     var anchor = item.FindControl("anchor") as HtmlAnchor; 
     anchor.ServerClick += contactLink_Click; 
    } 
} 

注意sender(必要な場合)