簡體   English   中英

如何將hovermenuextender控件綁定到動態表格視圖中具有多列的行?

[英]How to bind hovermenuextender control to a row with multiple columns in a dynamic gridview?

我希望將hovermenu彈出窗口附加到從數據源動態填充的gridview的行中。 我試圖在發生rowdatabound事件時將hovermenuextender控件的TargetcontrolId屬性設置為行唯一ID。 但是,彈出窗口不是出現在每一行的右側,而是出現在標題行的右側。 有人可以幫我解決這個問題嗎? 我在下面的代碼中使用了相同的代碼

代碼背后:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    try
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            HoverMenuExtender hoverMenu =(HoverMenuExtender)e.Row.FindControl("hme2");
            if (hoverMenu != null)
            {
                hoverMenu.TargetControlID = hoverMenu.Parent.Parent.UniqueID;

            } 
        }
    }
}

Aspx頁面:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <ContentTemplate>

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" ShowFooter="false" ShowHeader="false"
      OnRowEditing="GridView1_RowEditing" OnRowCommand="GridView1_RowCommand" OnRowUpdating="GridView1_RowUpdating"
      GridLines="None"  OnRowDataBound="GridView1_RowDataBound">

      <AlternatingRowStyle BackColor="White" />
      <Columns>
        <asp:TemplateField HeaderText ="Talk Title">
          <ItemTemplate>
            <asp:Label Font-Bold="true" ID="lbltalktitle"  runat="server" Text='<%#Eval("Talk_Title") %>' />
          </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText ="Brand">
          <ItemTemplate>
            <asp:Label ID="lblBrand" runat="server" Text='<%# Eval("Brand") %>' /></td>
          </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText ="Franchise">
          <ItemTemplate>
            <asp:Label ID="lblFranchise" runat="server" Text='<%# Eval("Franchise") %>' />
          </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText ="programmetype">
          <ItemTemplate>
            <asp:Label ID="lblprg" runat="server" Text='<%# Eval("programmetype") %>' />
          </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText ="programmetype">
          <ItemTemplate>
            <asp:Label ID="lblsaledforce" runat="server" Text='<%# Eval("salesforce") %>' />
          </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText ="Start_Date">
          <ItemTemplate>
            <asp:Label ID="lblstartdate" runat="server" Text='<%# Eval("Start_Date") %>' />
          </ItemTemplate>
        </asp:TemplateField>

        <asp:TemplateField HeaderText ="End_Date">
          <ItemTemplate>
            <asp:Label ID="lblenddate" runat="server" Text='<%# Eval("End_Date") %>' />
          </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
          <ItemTemplate>
            <cc1:HoverMenuExtender ID="hme2" runat="server" TargetControlID="lblenddate"
              PopupControlID="PopupMenuX" HoverCssClass="popupHover" PopupPosition="Right"/>

            <asp:Panel CssClass="popupMenu" ID="PopupMenuX" runat="server">
              <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Edit" Text="Edit" /><br />
              <asp:LinkButton ID="LinkButton2" runat="server" CommandName="Delete" Text="Delete" />
            </asp:Panel>
          </ItemTemplate>
        </asp:TemplateField>

      </Columns>

      <FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
      <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
      <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
      <RowStyle  ForeColor="Black"  />
      <SortedAscendingCellStyle BackColor="#F1F1F1" /> 
      <SortedAscendingHeaderStyle BackColor="#594B9C" />
      <SortedDescendingCellStyle BackColor="#CAC9C9" />
      <SortedDescendingHeaderStyle BackColor="#33276A" />
    </asp:GridView>
protected void gv_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        AjaxControlToolkit.HoverMenuExtender ajxhovermenu = (AjaxControlToolkit.HoverMenuExtender)e.Row.FindControl("ahm_1");
        e.Row.ID = e.Row.RowIndex.ToString();
        ajxhovermenu.TargetControlID = e.Row.ID;
    }
}

在GridView的RowCreated事件中提供HoverMenuExtender的TargetControlID並將其設置為RowID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM