i am using a ModalPopupExtender inside a gridview.
my requirement is when i clicks a linkbutton(linkFlagsNew) in the gridview it should display "ModalPopupFR", which contains the user login or registration processes. when i clicks login button in "ModalPopupFR" (after entering the user credentials ), it should displays the "ModalPopupFM", Which will send a mail. The inner functionality like check login, registering user, sending mail all are working fine. but am having problem with visibility of the ModalPopup's.
i have lot of problems with that ModalPopup. The below are the list of my Problems.
1. When i click the first row of the gridview it will shows the "ModalPopupFR" correctly, but when i try for the second row or other rows of the gridview it doesnt shows the "ModalPopupFR".
2. When ever the page gets PostBack, it closes all my opened modalpopup's.
3. I cant Show or Hide the ModalPopup's on my Code Behind Page.
My CodeBehind Page:
protected void linkFlagsNew_Click(object sender, EventArgs e)
{
int i = Convert.ToInt32(((LinkButton)sender).CommandArgument.ToString());
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Show();
}
//Newest Flag Register
protected void FROkButton_Click(object sender, EventArgs e)
{
int i = Convert.ToInt32(((Button)sender).CommandArgument.ToString());
FREnableValidator(i,gvNewest);
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Page.Validate("c");
if (((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Page.IsValid)
{
UserEntity user = new UserEntity();
user.DisplayName = ((TextBox)gvNewest.Rows[i].FindControl("FRtxtUser")).Text;
user.Password = ((TextBox)gvNewest.Rows[i].FindControl("FRtxtPass")).Text;
user.EmailID = ((TextBox)gvNewest.Rows[i].FindControl("FRtxtEmail")).Text;
user.Age = Convert.ToInt32(((TextBox)gvNewest.Rows[i].FindControl("FRtxtAge")).Text);
user.JoinDate = DateTime.Now;
UserProfileEntity prof = new UserProfileEntity();
prof.EmailID = ((TextBox)gvNewest.Rows[i].FindControl("FRtxtEmail")).Text;
prof.FirstName = ((TextBox)gvNewest.Rows[i].FindControl("FRtxtFirst")).Text;
prof.LastName = ((TextBox)gvNewest.Rows[i].FindControl("FRtxtSecond")).Text;
UserBO uObj = new UserBO();
uObj.AddtoUsers(user);
UserProfileBO pObj = new UserProfileBO();
pObj.AddtoUserProfiles(prof);
Session["FlagUser"] = user.EmailID;
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Hide();
FRDisableValidator(i,gvNewest);
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFM")).Show();
}
else
{
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Show();
}
}
//Newest Flag Login
protected void FRlog_Click(object sender, EventArgs e)
{
int i = Convert.ToInt32(((Button)sender).CommandArgument.ToString());
string username = ((TextBox)gvNewest.Rows[i].FindControl("FRusername")).Text;
string pass = ((TextBox)gvNewest.Rows[i].FindControl("FRpass")).Text; ;
if ((!username.Equals(String.Empty)) || (!pass.Equals(String.Empty)))
{
UserBO uObj = new UserBO();
IList<UserEntity> dsUser = uObj.CheckUser(username, pass);
if (dsUser.Count > 0)
{
Session["FlagUser"] = dsUser[0].EmailID.ToString();
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Show();
}
else
{
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFM")).Hide();
}
}
else
{
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFM")).Hide();
}
}
//Newest Flag Send Mail
protected void FMOkButton_Click(object sender, EventArgs e)
{
int i = Convert.ToInt32(((Button)sender).CommandArgument.ToString());
((Label)gvNewest.Rows[i].FindControl("lblerror")).Text = "";
string option = (((RadioButtonList)gvNewest.Rows[i].FindControl("rdOption")).SelectedItem.Text);
SendMail mObj = new SendMail();
if (mObj.MailtoSend(Session["FlagUser"].ToString(), "muralidharanp@cybonyx.com", "Flag : " + option, option))
{
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFM")).Hide();
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Hide();
}
else
{
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFM")).Show();
((AjaxControlToolkit.ModalPopupExtender)gvNewest.Rows[i].FindControl("ModalPopupFR")).Show();
((Label)gvNewest.Rows[i].FindControl("lblerror")).Text = "Problem in Mail Sending";
}
}
private void FREnableValidator(int i, GridView gv)
{
((RequiredFieldValidator)gv.Rows[i].FindControl("FRrequsername")).Enabled = true;
((RequiredFieldValidator)gv.Rows[i].FindControl("FRreqpassword")).Enabled = true;
((CompareValidator)gv.Rows[i].FindControl("FRcpassword")).Enabled = true;
((RequiredFieldValidator)gv.Rows[i].FindControl("FRreqemail")).Enabled = true;
((RegularExpressionValidator)gv.Rows[i].FindControl("FRregemail")).Enabled = true;
((RequiredFieldValidator)gv.Rows[i].FindControl("FRreqname")).Enabled = true;
((ValidationSummary)gv.Rows[i].FindControl("FRsumm")).Enabled = true;
}
private void FRDisableValidator(int i, GridView gv)
{
((RequiredFieldValidator)gv.Rows[i].FindControl("FRrequsername")).Enabled = false;
((RequiredFieldValidator)gv.Rows[i].FindControl("FRreqpassword")).Enabled = false;
((CompareValidator)gv.Rows[i].FindControl("FRcpassword")).Enabled = false;
((RequiredFieldValidator)gv.Rows[i].FindControl("FRreqemail")).Enabled = false;
((RegularExpressionValidator)gv.Rows[i].FindControl("FRregemail")).Enabled = false;
((RequiredFieldValidator)gv.Rows[i].FindControl("FRreqname")).Enabled = false;
((ValidationSummary)gv.Rows[i].FindControl("FRsumm")).Enabled = false;
}
My Question.aspx Page:
<asp:GridView ID="gvNewest" Width="100%" runat="server" GridLines="None" AutoGenerateColumns="false"
ShowHeader="false" DataKeyNames="QuestionID" OnRowDataBound="gvNewest_RowDataBound"
AllowPaging="true">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<span>
<div class="answer">
<strong>
<asp:Label ID="lblCntNew" runat="server"></asp:Label></strong><br />
Answers
</div>
<ul class="review-Beams1 left">
<li class="Beams-count1"><a href="#">
<asp:Label ID="lblBeamNew" runat="server"></asp:Label><span><br />
beams</span> </a></li>
<li class="Beams-it1">
<asp:LinkButton ID="lnkBeam" Enabled="false" runat="server" Text="Beam"></asp:LinkButton><br>
Up</li>
<li><a href="#">What is this?</a></li>
</ul>
<div class="review-body">
<h4>
<a href="#">
<asp:LinkButton ID="LinkButton1" runat="server" Text=' <%# Eval("QuestionTitle") %> ' />,</a></h4>
Written
<asp:Label ID="Label1" runat="server" Text=' <%# Eval("QuestionDate","{0:MM/dd/yyyy}")%> '></asp:Label>
<p>
<%# Eval("QuestionText") %></p>
<p>
<a href="#">Read More </a>
</p>
<div class="review-details">
<asp:LinkButton ID="LinkButton2" CssClass="tool flag" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
OnClick="linkFlagsNew_Click" runat="server" Text="Flags" />
<asp:HiddenField ID="HiddenField1" runat="server" />
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" BehaviorID="FRModal" runat="server"
CancelControlID="FRCancel" TargetControlID="linkFlagsNew" PopupControlID="FRPannel"
RepositionMode="None" BackgroundCssClass="modalBackground" DropShadow="true" />
<!-- Modal PopUpExtender -->
<asp:Panel ID="Panel1" runat="server" Style="display: none" CssClass="modalPopup"
Width="560px">
<table width="560px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="3">
<asp:Label ID="Label2" runat="server" Visible="false" Text=' <%# Eval("QuestionID") %> '></asp:Label>
</td>
</tr>
<tr>
<td colspan="3">
<b>You've got to login or join to Flag that!</b>
</td>
</tr>
<tr>
<td colspan="3">
<hr />
</td>
</tr>
<tr>
<td colspan="3">
Login, if you are already a Flag user!
</td>
</tr>
<tr>
<td>
</td>
<td align="right">
User
</td>
<td align="left">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td align="right">
Password
</td>
<td align="left">
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td colspan="2" align="center">
<asp:Button ID="Button1" Text="Flag" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
CausesValidation="false" runat="server" OnClick="FRlog_Click"></asp:Button>
</td>
</tr>
<tr>
<td colspan="3">
<hr />
</td>
</tr>
<tr>
<td width="15%">
<b>Join to Flag</b>
</td>
<td colspan="2">
<p>
Flag is to share the comments of the web. Start Flagging and Commenting by creating
an account it only takes a minute.</p>
</td>
</tr>
<tr>
<td>
</td>
<td align="right" valign="top" colspan="1">
Choose a username (no spaces)
</td>
<td align="left" valign="top" colspan="1">
<asp:TextBox ID="TextBox3" runat="server" Text="" ValidationGroup="c"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" Enabled="false" runat="server"
Text="*" ValidationGroup="c" ErrorMessage="Please enter UserName" ControlToValidate="FRtxtUser"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
</td>
<td align="right" valign="top" colspan="1">
Choose a password
</td>
<td align="left" valign="top" colspan="1">
<asp:TextBox ID="TextBox4" runat="server" ValidationGroup="c" TextMode="Password"
Text=""></asp:TextBox>
<div class="registervalidator">
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" Enabled="false" runat="server"
ValidationGroup="c" Text="*" ErrorMessage="Please enter password" ControlToValidate="FRtxtPass"></asp:RequiredFieldValidator></div>
</td>
</tr>
<tr>
<td>
</td>
<td align="right" valign="top" colspan="1" height="10px">
Retype password
</td>
<td align="left" valign="top" colspan="1">
<asp:TextBox ID="TextBox5" ValidationGroup="c" runat="server" TextMode="Password"
Text=""></asp:TextBox>
<div class="registervalidator">
<asp:CompareValidator ID="CompareValidator1" Enabled="false" ValidationGroup="c"
runat="server" Text="*" ErrorMessage="Please Re-type the password correctly."
ControlToValidate="FRtxtRePass" ControlToCompare="FRtxtPass"></asp:CompareValidator>
</div>
</td>
</tr>
<tr>
<td>
</td>
<td align="right" valign="top" colspan="1">
Email address (must be real!)
</td>
<td align="left" valign="top" colspan="1">
<asp:TextBox ID="TextBox6" runat="server" Text="" ValidationGroup="c"></asp:TextBox>
<br />
<asp:CheckBox ID="CheckBox1" runat="server" Checked="true" Text=" Send me occasional Digg updates. " />
<div class="registervalidator">
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" Enabled="false" ValidationGroup="c"
runat="server" Text="*" ErrorMessage="Please enter Email Address." ControlToValidate="FRtxtEmail"
Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationGroup="c"
Enabled="false" Display="Dynamic" runat="server" Text="Please enter a valid Email."
ControlToValidate="FRtxtEmail" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator>
</div>
</td>
</tr>
<tr>
<td>
</td>
<td align="left" valign="top" colspan="1">
FirstName
<asp:TextBox ID="TextBox7" runat="server" ValidationGroup="c" Text=""></asp:TextBox>
<div class="registervalidator">
<asp:RequiredFieldValidator ValidationGroup="c" Enabled="false" ID="RequiredFieldValidator4"
runat="server" Text="*" ErrorMessage="Please enter FirstName." ControlToValidate="FRtxtFirst"></asp:RequiredFieldValidator>
</div>
</td>
<td align="left" valign="top" colspan="1">
LastName
<asp:TextBox ID="TextBox8" runat="server" Text=""></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td align="right" colspan="1">
Age
</td>
<td align="left" colspan="1">
<asp:TextBox ID="TextBox9" runat="server" Text=""></asp:TextBox>
</td>
</tr>
<tr>
<td>
</td>
<td valign="top" align="center" colspan="2">
<asp:ValidationSummary ID="ValidationSummary1" Enabled="false" runat="server" ValidationGroup="c"
DisplayMode="SingleParagraph" ShowSummary="true" />
</td>
</tr>
<tr>
<td>
</td>
<td align="left" colspan="2">
I agree to the Terms of Use and Privacy Policy
<asp:Button ID="Button2" runat="server" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="I agree, continue.." OnClick="FROkButton_Click" CausesValidation="false" />
</td>
</tr>
<tr>
<td colspan="3">
<asp:LinkButton ID="LinkButton3" runat="server" Text="X Close" CausesValidation="false"></asp:LinkButton>
</td>
</tr>
</table>
</asp:Panel>
<!-- Modal PopUpExtender -->
<asp:HiddenField ID="HiddenField2" runat="server" />
<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender2" runat="server" BehaviorID="FMModal"
CancelControlID="FMCancel" TargetControlID="hdnFMModal" PopupControlID="FMPannel"
RepositionMode="None" BackgroundCssClass="modalBackground" DropShadow="true" />
<!-- Modal PopUpExtender -->
<asp:Panel ID="Panel2" runat="server" Style="display: none" CssClass="modalPopup"
Width="300px">
<table width="300px" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2">
<asp:Label ID="Label3" runat="server" Visible="false" Text=' <%# Eval("QuestionID") %> '></asp:Label>
</td>
</tr>
<tr>
<td colspan="2">
Choose :
</td>
</tr>
<tr>
<td width="15%">
</td>
<td>
<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Vertical">
<asp:ListItem Value="bad">Bad Words</asp:ListItem>
<asp:ListItem Value="vulgure">Vulgure</asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<tr>
<td>
</td>
<td align="left" colspan="1">
<asp:Button ID="Button3" runat="server" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Send Mail" OnClick="FMOkButtonPop_Click" CausesValidation="false" />
</td>
</tr>
<tr>
<td colspan="3">
<asp:LinkButton ID="LinkButton4" runat="server" Text="X Close" CausesValidation="false"></asp:LinkButton>
</td>
</tr>
</table>
</asp:Panel>
<!-- Modal PopUpExtender -->
<asp:LinkButton ID="LinkButton5" CssClass="tool comments" runat="server" Text="Comments" />
</div>
</div>
<div class="dividerBorder">
</div>
</span>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
Select allOpen in new window
by: TheLearnedOnePosted on 2009-08-10 at 17:25:39ID: 25065351
There are reasons for the ModalPopupExtender not to work, but it is difficult to know just the right one...
1) Dynamic controls not recreated after post-back.
2) Dynamic controls not created at the correct time in the page life-cycle.
3) Incorrect control IDs.