我正在通过在gridview中为单元格创建弹出窗口来创建弹出窗口。 我正在关注示例here
唯一的区别是该示例只有一个具有弹出行为的单元格。
对于我的情况,我在gridview中有19 columns
,其中8 columns
的值具有此行为。
所以我扩展了示例并添加了更多ajax:PopupControlExtender
个元素,然后添加了其他内容,如示例所示。
当我运行代码时,我看到弹出窗口总是出现在gridview row(say the second cell)
的固定位置,即使我已经在第19个单元格上完成了鼠标悬停。
修改:
`protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
PopupControlExtender pce = e.Row.FindControl("PopupControlExtender1") as PopupControlExtender;
string behaviorID = "pce_" + e.Row.RowIndex;
pce.BehaviorID = behaviorID;
Image img = (Image)e.Row.FindControl("Image1");
string OnMouseOverScript = string.Format("$find('{0}').showPopup();", behaviorID);
string OnMouseOutScript = string.Format("$find('{0}').hidePopup();", behaviorID);
img.Attributes.Add("onmouseover", OnMouseOverScript);
img.Attributes.Add("onmouseout", OnMouseOutScript); }}
以上是行创建方法中的代码。 以下是aspx文件中的代码,
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
BorderColor="#336699" BorderStyle="Solid" BorderWidth="1px"
CellPadding="3" Font-Names="Verdana" Font-Size="10pt"
onrowcreated="GridView1_RowCreated">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="Product ID" />
<asp:BoundField DataField="ProductName" HeaderText="Product Name" />
<asp:TemplateField ItemStyle-Width="40" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:Image ID="Image1" runat="server"
ImageUrl="~/images/magnify.gif" />
<ajax:PopupControlExtender ID="PopupControlExtender1" runat="server"
PopupControlID="Panel1"
TargetControlID="Image1"
DynamicContextKey='<%# Eval("ProductID") %>'
DynamicControlID="Panel1"
DynamicServiceMethod="GetDynamicContent" Position="Bottom">
</ajax:PopupControlExtender>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyle BackColor="#336699" ForeColor="White" />
</asp:GridView>
现在,此示例用于在单个单元格上显示弹出窗口。 我的问题是我需要添加什么来制作另一个显示在特定单元格上的弹出窗口。我希望弹出窗口的位置正好在单元格而不是任何其他位置。