Отображать всплывающее окно с простым текстом при нажатии кнопки - PullRequest
0 голосов
/ 07 марта 2012

У меня есть кнопка, размещенная в каждом ряду моего GridView . Когда пользователь нажимает кнопку, я хотел бы отобразить простое всплывающее окно, где я показываю текст. Часть текста - это DataKeyName , относящаяся к конкретной строке.

Я уже пробовал с ModalPopupExtender myMPE , вызванным кнопкой, и я использовал Panel myPanel как PopupControlID . Проблема в том, что TextBox txtPanel панели, в которой я размещаю значение DataKeyName , всегда пусто. Я попытался отладить без myMPE , и txtPanel панели правильно заполнен. Я предполагаю, что это портит постбэки.

Кто-нибудь знает решение?

1 Ответ

1 голос
/ 07 марта 2012

Вы выполняете обновление UpdaePanel вручную на модальной всплывающей панели? Если нет, попробуйте вручную обновить updatePanel и установите для его updateMode значение Conditional. Проверьте приведенный выше пример ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link rel="Stylesheet" type="text/css" href="css/StyleSheet.css" />
    <style type="text/css">
        .modal
        {
            background-color: Aqua;
            width: 150px;
            height: 100px;
            padding: 6px;
        }
        .modalBackground
        {
            background-color: #CCCCFF;
            filter: alpha(opacity=40);
            opacity: 0.5;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:UpdatePanel ID="upnGrid" runat="server">
            <ContentTemplate>
                <asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
                <asp:GridView CssClass=".Grid-blue" ID="GridView1" runat="server" AllowPaging="True"
                    AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ProductID" DataSourceID="LinqDataSource1">
                    <Columns>
                        <asp:BoundField DataField="ProductID" HeaderText="ProductID" InsertVisible="False"
                            ReadOnly="True" SortExpression="ProductID" />
                        <asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
                        <asp:BoundField DataField="SupplierID" HeaderText="SupplierID" SortExpression="SupplierID" />
                        <asp:BoundField DataField="CategoryID" HeaderText="CategoryID" SortExpression="CategoryID" />
                        <asp:BoundField DataField="QuantityPerUnit" HeaderText="QuantityPerUnit" SortExpression="QuantityPerUnit" />
                        <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" SortExpression="UnitPrice" />
                        <asp:BoundField DataField="UnitsInStock" HeaderText="UnitsInStock" SortExpression="UnitsInStock" />
                        <asp:BoundField DataField="UnitsOnOrder" HeaderText="UnitsOnOrder" SortExpression="UnitsOnOrder" />
                        <asp:BoundField DataField="ReorderLevel" HeaderText="ReorderLevel" SortExpression="ReorderLevel" />
                        <asp:CheckBoxField DataField="Discontinued" HeaderText="Discontinued" SortExpression="Discontinued" />
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:LinkButton ID="lbEdit" runat="server" OnClick="lbEdit_Click">Edit</asp:LinkButton>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="DataClassesDataContext"
            EntityTypeName="" TableName="Products">
        </asp:LinqDataSource>
    </div>
    <ajaxToolkit:ModalPopupExtender BackgroundCssClass="modalBackground" ID="mpeDetails"
        CancelControlID="btnClosePopup" TargetControlID="btnShowModal" PopupControlID="pnlDetails"
        runat="server">
    </ajaxToolkit:ModalPopupExtender>
    <asp:Button ID="btnShowModal" runat="server" Text="Button" Style="display: none" />
    <asp:Panel ID="pnlDetails" CssClass="modal" runat="server" Style="display: none">
        <asp:UpdatePanel ID="upnDetails" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <label>
                    ID:</label><asp:TextBox ID="txtID" runat="server"></asp:TextBox>
                <br />
                <label>
                    Name:</label>
                <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
                <br />
            </ContentTemplate>
        </asp:UpdatePanel>
        <div>
            <asp:Button ID="btnClosePopup" runat="server" Text="Cancel" /></div>
    </asp:Panel>
    </form>
</body>
</html>

.cs

защищенный void lbEdit_Click (отправитель объекта, EventArgs e) { LinkButton lbTemp = (LinkButton) отправитель;

    if (lbTemp != null)
    {
        GridViewRow grow =(GridViewRow) lbTemp.NamingContainer;
        int id = Convert.ToInt32(GridView1.DataKeys[grow.RowIndex][0].ToString());

        mpeDetails.Show();
        txtID.Text = id.ToString();
        upnDetails.Update();
    }
}
...