1
我使用ModalPopupExtender今天而已,所以我没有太多的想法它是如何工作不显示DetailsView控件在ModalPopupExtender
我陷在这里的问题
我有GridView的显示所有学生的数据,现在当我点击在GridView中的特定学生的Linkbutton比那个学生的数据应该显示在弹出的Detailsview上
我在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代码 -
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();
}
BAL文件 -
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;
}
感谢回答我的问题,但同样的问题,即使弹出没有显示出来,当我点击GridView控件LinkButton的,只显示了当点击在btnshowpopup – vikas
哦,不!对不起,@vikas。你是否收到任何错误讯息?例如,JavaScript错误?此外,它是一个很长的,但你应该尝试在第一个UpdatePanel中定义GridView作为包含DetailsView的UpdatePanel的触发器。 – jadarnel27
谢谢@jadarnel,但我今天早上刚刚解决它,实际上我触发了updatepanel2中的触发器作为gridview的控件ID,并在LinkButton1_Click中编写了所有GridView1_SelectedIndexChanged代码,并且按照您所说的将模型弹出移动到面板外并添加了一些标签并且它工作正常,并且感谢再次给予解决方案 – vikas