2014-01-22 2 views
1

я использовал ModalPopupExtender только сегодня, так что я не так много знаю, как это работаетНе показаны DetailsView в ModalPopupExtender

я застрял в задаче здесь

У меня есть Gridview с указанием всех данных студентов, теперь, когда я нажимаю на Linkbutton конкретного учащегося в Gridview, чем данные студента, должны отображаться в Detailsview по всплывающему окну

Я получаю данные о студентах в деталях, но не отображается в всплывающем окне, должен ли я добавить что-нибудь еще здесь?

вот мой код modelpopupextender

ASPX код-

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
     <ContentTemplate> 
       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="Stu_id" onselectedindexchanged="GridView1_SelectedIndexChanged"> 
       <Columns> 
        <asp:TemplateField HeaderText="ID"> 
         <EditItemTemplate> 
          <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Stu_id") %>'></asp:TextBox> 
         </EditItemTemplate> 
         <ItemTemplate> 
          <asp:Label ID="Label1" runat="server" Text='<%# Bind("Stu_id") %>'></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
          <asp:BoundField DataField="Fullname" HeaderText="name" /> 
          <asp:BoundField DataField="Username" HeaderText="Username" /> 
          <asp:BoundField DataField="Email" HeaderText="Email" /> 
          <asp:TemplateField ShowHeader="False"> 
         <ItemTemplate> 
          <asp:LinkButton ID="btnviewdetails" runat="server" CausesValidation="false" 
           CommandName="Select" Text="select" CommandArgument='<%# Eval("Stu_id") %>' 
           onclick="LinkButton1_Click"></asp:LinkButton> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
<asp:Button ID="btnshowpopup" runat="server"/> 
     <asp:ModalPopupExtender ID="mdlpopup" runat="server" TargetControlID="btnshowpopup" PopupControlID="pnlpopup" CancelControlID="btncancel" BackgroundCssClass="pop"> 
     </asp:ModalPopupExtender> 

    <asp:Panel ID="pnlpopup" runat="server" Width="500px" style="display:none"> 
     <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
      <ContentTemplate> 



       <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="Stu_id" Height="50px" Width="125px"> 
         <Fields> 
           <asp:BoundField DataField="Stu_id" HeaderText="ID" /> 
           <asp:BoundField DataField="Fullname" HeaderText="Fullname" /> 
           <asp:BoundField DataField="Username" HeaderText="Username" /> 
           <asp:BoundField DataField="Email" HeaderText="Email" /> 
         </Fields> 
       </asp:DetailsView> 
        <div id="div1" style="display:none">      
         <asp:Button ID="btncancel" runat="server" Text="cancel" /> 
       </div> 
      </ContentTemplate> 
     </asp:UpdatePanel>    
    </asp:Panel> 

CS code-

public partial class Admin_Default : System.Web.UI.Page 


{ 
    portalDal dal = new portalDal(); 
    adminBal bal = new adminBal(); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      GridView1.DataSource = bal.student_bind(); 
      GridView1.DataBind(); 
     } 
    } 
    protected void LinkButton1_Click(object sender, EventArgs e) 
    { 

    } 
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 

    this.DetailsView1.Visible = true; 
    LinkButton l1 = (LinkButton)sender; 
    dal.stu_id = Convert.ToInt16(l1.CommandArgument); 
    DetailsView1.DataSource = bal.select_student(dal); 
    DetailsView1.DataBind(); 
    this.UpdatePanel2.Update(); 
    this.mdlpopup.Show(); 

} 

БАЛ Файл-

public DataTable student_bind() 
    { 
     con.Open(); 
     cmd = new SqlCommand("select * from Stu_registration", con); 
     DataTable dt = new DataTable(); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     da.Fill(dt); 
     con.Close(); 
     return dt; 
    } 

    public DataTable aselect_student(portalDal dal) 
    { 
     con.Open(); 
     cmd = new SqlCommand("select_student", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@Stu_id", dal.stu_id); 
     DataTable dt = new DataTable(); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     da.Fill(dt); 
     con.Close(); 
     return dt; 
    } 

ответ

0

I несколько наблюдений:

  • Вам необходимо переместить элемент управления ModalPopupExtender за панель, которую вы используете для модального всплывающего окна (pnlpopup, в вашем случае).
  • Как только вы это сделаете, вы можете изменить свой CancelControlID на UpdatePanel2$btncancel (иначе ваш ModalPopupExtender не сможет найти элемент управления «btncancel» внутри этой UpdatePanel).
  • Вам также нужно переместить элемент управления, который вы используете, в качестве «TargetControlID» (btnshowpopup, в вашем случае) вне модального управления всплывающим окном.

Так разметка должна выглядеть следующим образом:

<asp:Panel ID="pnlpopup" runat="server" Width="500px" style="display:none"> 
    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
       DataKeyNames="Stu_id" Height="50px" Width="125px"> 
       <Fields> 
        <asp:BoundField DataField="Stu_id" HeaderText="ID" /> 
        <asp:BoundField DataField="Fullname" HeaderText="Fullname" /> 
        <asp:BoundField DataField="Username" HeaderText="Username" /> 
        <asp:BoundField DataField="Email" HeaderText="Email" /> 
       </Fields> 
      </asp:DetailsView> 
      <div id="div1" style="display:none">      
       <asp:Button ID="btncancel" runat="server" Text="cancel" /> 
      </div> 
     </ContentTemplate> 
    </asp:UpdatePanel>    
</asp:Panel> 

<asp:ModalPopupExtender ID="mdlpopup" runat="server" 
    TargetControlID="btnshowpopup" PopupControlID="pnlpopup" 
    CancelControlID="UpdatePanel2$btncancel" BackgroundCssClass="pop"> 
</asp:ModalPopupExtender> 
<asp:Button ID="btnshowpopup" runat="server"/> 

Я хотел бы также изменить порядок «Update» и «Показать» команды в файле codebaheind. Я не думаю, что он будет делать никакой разницы, но это, безусловно, более логично:

this.mdlpopup.Show(); 
this.UpdatePanel2.Update(); 
+0

спасибо за ответ на мой вопрос, но та же проблема, даже всплывающее окно не отображается, когда я нажимаю GridView LinkButton, показывает только при клике on btnshowpopup – vikas

+0

О нет! Извините, @vikas. Вы получаете сообщения об ошибках? Например, ошибки JavaScript? Кроме того, это длинный снимок, но вы должны попытаться определить GridView в первой UpdatePanel как триггер для UpdatePanel, который содержит DetailsView. – jadarnel27

+0

спасибо @jadarnel, но я только что решил его сегодня утром, на самом деле я запускал триггер в updatepanel2 как контрольный идентификатор gridview и написал весь код GridView1_SelectedIndexChanged в LinkButton1_Click, и сделал так, как вы сказали, что переместил modelpopup за панель и добавил некоторые теги, и это сработало, и спасибо снова за предоставление решения – vikas

Смежные вопросы