Как программно установить свойства веб-элемента управления, размещенного на панели, управляемой ModalPopupExtender - PullRequest
0 голосов
/ 07 марта 2012

У меня есть приложение ASP.NET Web Forms. В моем GridView OverviewGridView есть кнопка dlButton , которая запускает ModalPopupExtender DisplayLinkMPE , который управляет Panel dlModalPanel . После нажатия dlButton я хочу отобразить некоторый текст (который отличается в зависимости от строки GridView), когда всплывает dlModalPanel . У меня есть этот код в моем aspx:

<asp:Button ID="dlButton" runat="server" CommandName="DisplayLink" CommandArgument="<%# TryCast(Container,GridViewRow).RowIndex %>" Text="Copy Link" />
<ajax:ModalPopupExtender ID="DisplayLinkMPE" runat="server" TargetControlID="dlButton" PopupControlID="dlModalPanel" CancelControlID="btnCancel" BackgroundCssClass="modalBackground" />

 <asp:ScriptManager ID="ModalDialogScriptManager" runat="server" />
    <asp:Panel ID="dlModalPanel" runat="server" Style="display: none;">
        <table>
            <tr align="center">
                <td colspan="2">
                    <asp:Label ID="lblDownloadLink" runat="server" ForeColor="White">Copy Download Link:</asp:Label>
                    <asp:Label ID="txtDownloadLink" runat="server"></asp:Label>
                </td>
            </tr>
            <tr>
                <td align="right">
                    <asp:Button ID="btnCancel" runat="server" Text="Cancel" />
                </td>
            </tr>
        </table>
    </asp:Panel>

В моем коде за dlButton щелчок обрабатывается обработчиком событий OverviewGridView RowCommand , который выполняется после обратной передачи Page :

Dim selectedRowIndex As Integer = Convert.ToInt32(e.CommandArgument)

Dim displayLinkMPE As AjaxControlToolkit.ModalPopupExtender = OverviewGridView.Rows(selectedRowIndex).FindControl("displayLinkMPE")

//Get itemUrl

txtDownloadLink.Text = itemUrl
displayLinkMPE.Show()

Все отображается правильно, но Text in txtDownloadLink остается пустым. Как я могу обновить это Текст ? Спасибо

Я также понимаю C #, поэтому ответы на обоих языках приветствуются!

1 Ответ

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

Проверьте этот отличный пост от Мэтта Берсета Проверьте это здесь , я думаю, что вы должны использовать панель обновления и обернуть в нее свой модальный код, а затем вручную обновить панель обновления с помощью

upatePanel1.Update();
  1. Проверьте эту ссылку для другого примера

Редактировать Проверить полностью рабочий пример. Вы должны вручную обновить модальную всплывающую панель обновлений, чтобы увидеть любые изменения в текстовом поле. 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

   protected void lbEdit_Click(object sender, EventArgs e)
{
    LinkButton lbTemp = (LinkButton)sender;

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