2012-03-07 12 views
0

GridViewの各行にボタンがあります。ユーザーがボタンを押すと、テキストを表示するシンプルなポップアップが表示されます。テキストの一部は、特定の行に関連するDataKeyNameです。ボタンをクリックすると簡単なテキストでポップアップが表示されます

私はすでにボタンによってトリガModalPopupExtender myMPEにしようと、私はPopupControlIDとしてmyPanelパネルを使用しました。問題は、パネルのTextBox txtPanelは、DataKeyNameの値は常に空であることです。私はmyMPEとパネルのtxtPanelを使わずにデバッグしようとしました。私はそれがポストバックを混乱させると思う。

誰もが解決策を知っていますか?

答えて

1

モーダルポップアップパネルで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空隙lbEdit_Click(オブジェクト送信者、のEventArgs電子) {LinkBut​​tonコントロールlbTemp =(LinkBut​​tonコントロール)送信者を保護

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