私はasp:ModalPopupExtenderを使用しようとしているページがあります。私はseachツールとしてポップアップを使用していますので、テキストボックス、検索ボタン、グリッドビュー、およびOKボタンを持つユーザーコントロールがあります。ユーザーが検索語を入力して[検索]ボタンをクリックすると、ポップアップが閉じてポップアップを閉じるポストバックが発生しています。ユーザーが[OK]ボタンをクリックするまで、ポップアップを閉じることはありません。ポップアップは、他の機能を持たない単純なページとまったく同じように使用でき、うまく動作します。私は少し困惑しています。asp:メインページのポストバックを引き起こすModalPopupExtenderボタン
ご協力いただければ幸いです。
ここには、ポップアップを含むページのコードがあります。
<asp:Panel ID="ApplicationPicker" runat="server" CssClass="hidden">
<asp:Button ID="Button1" runat="server" Text="Search for Application" />
<asp:Label ID="ApplicationID" runat="server"></asp:Label>
<asp:Panel ID="Panel1" runat="server" CssClass="modalBackground" style="display:none;">
<appPicker:ApplicationPicker ID="thisAppPicker" runat="server" />
<asp:Button ID="btnOk" runat="server" Text="Ok" OnClick="OkButton_Clicked" />
<asp:Button ID="btnClose" runat="server" Text="Close Me" />
</asp:Panel>
<asp:ModalPopupExtender
DropShadow="true"
CancelControlID="btnClose"
runat="server"
PopupControlID="Panel1"
id="ModalPopupExtender1"
TargetControlID="Button1" />
</asp:Panel>
ここでは、アプリケーションの選択ユーザーコントロールです。全体が更新パネルの中にありますが、何らかの理由でこのエディタが更新パネルでコードフォーマットを乱していました。ここ
と
<asp:Panel ID="pDelegateBody" BackColor="White" runat="server">
<table>
<tr>
<td><asp:Label CssClass="indentedTextBold" ID="ApplicationSearchLabel" runat="server" Text="Search for:"></asp:Label></td>
<td><asp:TextBox ID="txtSearch" runat="server" Width="300px" Visible="true" /><asp:Label ID="ValidationLabel" runat="server" Text="Please enter at least 3 characters to search." ForeColor="Red" Visible="false"></asp:Label></td>
<td><asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="Buttons" onclick="Search_Click" /></td>
</tr>
<tr>
<td colspan="4">
<asp:Panel ID="PanelProjectPicker" runat="server" Height="220px" Width="600px" ScrollBars="Vertical" BorderStyle="Solid" BorderWidth="1" BorderColor="GrayText">
<telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="False"
AutoGenerateColumns="False" CellPadding="0" DataKeyNames="LANID"
EnableEmbeddedSkins="false" onitemcommand="RadGrid1_ItemCommand"
ShowHeader="true" Skin="WF" ViewStateMode="Enabled" Width="580px" ClientIDMode="AutoID">
<MasterTableView Font-Size="X-Small">
<Columns>
<telerik:GridBoundColumn DataField="ApplicationID" HeaderText="ID" Visible="False" />
<telerik:GridBoundColumn DataField="Name" HeaderText="Display Name" SortExpression="DISPLAY_NAME" />
</Columns>
</MasterTableView>
<ClientSettings EnablePostBackOnRowClick="true" EnableRowHoverStyle="True">
<Selecting AllowRowSelect="true" />
</ClientSettings>
<HeaderStyle BackColor="#666666" Font-Names="verdana, arial" Font-Size="Small"
Height="20px" />
</telerik:RadGrid>
</asp:Panel>
<asp:Label ID="appID" runat="server"></asp:Label>
</td>
</tr>
</table>
は
protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName == "RowClick")
{
GridDataItem item = RadGrid1.Items[e.Item.ItemIndex];
appID.Text = item["ApplicationID"].Text;
}
}
protected void loadData()
{
if (Session["User"] != null)
{
currentUser = (User)Session["User"];
}
if (txtSearch.Text != "" && txtSearch.Text.Length > 2)
{
List<Application> AllApplications = new List<Application>();
if (UserController.IsUserWOT((User)Session["User"]))
{
AllApplications = BusinessUtility.GetApplications();
}
else
{
AllApplications = BusinessUtility.GetApplicationsByManagerLanId(currentUser.LanID);
}
List<Application> filteredApplications = new List<Application>();
filteredApplications = AllApplications.Where(x => x.Name.ToString().ToUpper().Contains(txtSearch.Text.ToUpper())).ToList();
if (filteredApplications.Count > 0)
{
RadGrid1.DataSource = filteredApplications;
RadGrid1.DataBind();
}
}
}
protected void Search_Click(object sender, EventArgs e)
{
if (txtSearch.Text.Length < 3)
{
ValidationLabel.Visible = true;
}
else
{
ValidationLabel.Visible = false;
RadGrid1.DataSource = "";
RadGrid1.DataBind();
loadData();
PanelProjectPicker.Visible = true;
}
}
Telerikを使用しているのでRadWindowを使用しない理由が不思議です。 – Win
正直言って答えはありません。知りません。たぶん私はそれを試してみるだろう。 – Rhonda