Everywhere I read questions about how to remember it, but I want to reset it!
I use this code:
<table>
<tr>
<td>Your name:</td>
<td><asp:TextBox runat="server" ID="user_name" MaxLength="20" AutoCompleteType="None" /></td>
</tr>
<tr>
<td><table><tr><td>Captcha:</td><td><img src="turing.aspx" alt="Enable images to see captcha image" /></td></tr></table></td>
<td><asp:TextBox runat="server" ID="txt_captcha" MaxLength="5" AutoCompleteType="None" /></td>
</tr>
<tr>
<td>Email for new messages reports:</td>
<td><asp:TextBox runat="server" ID="txt_eml" MaxLength="100" AutoCompleteType="None" /> (*this is not required)</td>
</tr>
<tr>
<td>Message text:</td>
<td><asp:TextBox runat="server" ID="comment_text" Columns = "30" Rows = "5" Wrap = "true" TextMode="MultiLine" AutoCompleteType="None"/></td>
</tr>
<tr>
<td colspan = "2">
<asp:Button runat="server" ID="Button1" Text="Add message" OnClick="HandleAddMessage" CausesValidation="true" ValidationGroup="second_group" />
</td>
</tr>
</table>
At HandleAddMessage I even reset those manually that way: user_name.Text = txt_eml.Text = txt_captcha.Text = comment_text.Text = string.Empty;
But after message added, if I refresh the page old values comes back.
What I can do to prevent it?
Once the user has submitted the form the first time, just response.redirect to the same page again. It effectively resets the page, so if they do refresh it, they won't post back the same data. It would also mean that your fields will all be reset since the page has effectively reloaded.
Related
I have this and I want to hide rows dynamically using vb.net codebehind.
I am using VS2010.
This is my table:
<table>
<tr id="FromDateRow">
<td><asp:Label ID="FromDateLabel" runat="server">From date:</asp:Label></td>
<td>
<input type="text" id="txtFromDateF" class="needs-datepicker" />
<asp:TextBox id="txtFromDate" CssClass="hidden" runat="server" />
</td>
</tr>
<tr id="ToDateRow">
<td><asp:Label ID="ToDateLabel" runat="server">To date:</asp:Label></td>
<td>
<input type="text" id="txtToDateF" class="needs-datepicker" />
<asp:TextBox id="txtToDate" CssClass="hidden" runat="server" />
</td>
</tr>
<tr>
<td><asp:Label ID="CustomerCodeLabel" runat="server">Customer Code</asp:Label>:</td>
<td><asp:DropDownList ID="CustomerCodeDropDownList" runat="server" AutoPostBack="False" /></td>
</tr>
<tr>
<td><asp:Label ID="CINumberLabel" runat="server">CI Number</asp:Label>:</td>
<td><asp:TextBox ID="CINumberTextBox" runat="server" /></td>
</tr>
</table>
Now I want to do something like this:
Select Case value
Case DisplayDates.FromDate
ToDateRow.CssClass = "hidden"
FromDateRow.CssClass = ""
Case DisplayDates.ToAndFromDate
ToDateRow.CssClass = ""
FromDateRow.CssClass = ""
Case Else
ToDateRow.CssClass = "hidden"
FromDateRow.CssClass = "hidden"
End Select
For some reason I cannot access the ToDateRow and the FromDateRow from my codebehind.
The objects you are trying to reference in codebehind (the relevant tr elements) needs to be defined as runat="server"
If CssClass is not a known property for the object instance try using the following:
rowObject.Attributes.Add("class", "hidden");
You must have
runat="server
tag in table and tr to access from code behind.
After comment :
ToDateRow.Attributes("class") = "CssClass";
Ok I solved it.
By adding the runat="server" i was able to access the row.
And then I found the "visible"-property.
Now it works just fine.
Thx for the help
In my masterpage I have links for users also the authorization is different like admin and regular user.
links under each other and I can hide the hyperlinks depending on authorization status but the problem is i.e when I have 3 links the second link for the admin the link will hide when the user is regular and the link place empty like 123 1 3.
So I have an idea using table each link in one tr but I can`t hide td or tr because Visible is not in properties.
any help?
thank you
According to how to hide a having asp.net control:
you can give ID either to the TD or TR to which you want to hide/show
with the runat="server" and also you can take that tr/td inside the
div tag and give id to that div tag and also runat=server attribute
and after that you can pro grammatically hide/show that div.
like
<pre>
<tr id="trhide" runat="server"> </tr>
</pre>
in code behind write
trhide.visible=true/false
In the master page VB code behind add a public procedure: Then call the public set from your aspx page.
'======================================================================================================
'Set Tab No invisible
'======================================================================================================
Public Sub setTabNumberLabel(visible As Int16)
If visible = 0 Then
td_page.Visible = False
Else
td_page.Visible = True
End If
End Sub
The master aspx would be:
<table style="width:100%">
<!--<tr style="background-color:#565656;">-->
<tr>
<td style="width:15%;text-align:left;vertical-align:bottom;padding-left:20px;">Stategic Energy Assessment ( <asp:Label ID="lbl_year_ended" runat="server" /> )</td>
<td style="text-align:center;vertical-align:bottom;"><asp:Label ID="lbl_utility_name_and_id" runat="server" /></td>
<td id="td_page" runat="server" style="width:15%;text-align:right;vertical-align:bottom;padding-right:20px;">Tab No: <asp:Label ID="lbl_page" runat="server" /></td>
</tr>
<tr><td colspan="3" style="vertical-align:central"><hr /></td></tr>
<tr>
<td style="width:15%;text-align:left;vertical-align:central">
<asp:Label ID="lbl_print_version" runat="server" Text="View Printable Vision" Visible="false" />
</td>
<td style="font-size:larger; font-weight:bold; text-align:center; text-transform:capitalize;vertical-align:central">
<asp:Label ID="lbl_schedule_name" runat="server" />
</td>
<td style="width:15%;text-align:right;vertical-align:central;padding-right:20px;">
<asp:LinkButton ID="btn_footnotes" runat="server" Visible="false">Footnotes</asp:LinkButton>
</td>
</tr>
<%--<tr><td colspan="3" style="vertical-align:central" class="auto-style1"></td></tr>--%>
<tr><td colspan="3" style="vertical-align:central; padding-right:20%;padding-left:20%; ">
<i><asp:Label ID="lbl_headnotes" runat="server" Text="" /></i></td></tr>
<tr><td colspan="3" style="vertical-align:central"><hr /></td></tr>
</table>
The other answer is correct and works fine. Just adding complete piece of code.
It's quite amusing that you don't need to add runat=server for a table but you can still hide tr for that table using runat attribute.
<table>
<tr>
<td>aa</td><td>bb</td>
</tr>
<tr id="trHide1" runat="server">
<td>aa</td><td>bb</td>
</tr>
<tr id="trHide2" runat="server">
<td>aa</td><td>bb</td>
</tr>
<tr>
<td>aa</td><td>bb</td>
</tr>
</table>
Now just set properties in codebehind (hiding the tr)
trHide1.Visible = false;
trHide2.Visible = false;
I am new to the ASP.NET i am binding one list of data object to the grid view. I want to display blank row after each record in grid view so i have done this by as below in code behind
List<DatabaseDTO> lstdatabase= new List<DatabaseDTO>();
foreach(int jobNumber in JobnumberList)
{
DatabaseDTO dataObject = new DatabaseDTO();
dataobject = GetDatabaseData(jobNumber);//Method to retrieve data and return data object
lstdatabase.Add(dataObject);
lstdatabase.Add(new DatabaseDTO());
}
gridView.DataSource = lstdatabase;
gridView.DataBind();
it's working correct i am getting the desired blank row in the grid view but i know this is not right way because i am adding object to the list so i can add the blank row in place of that i would very much like to adjust this blank row from the aspx page. I know there is another way using the DataTable but it is also not very good because it also adds the unnecessary records to the DataTable. So any other work around or way to solve this would be very great. Thank you.
Try This
<div>
<asp:DataList ID="DataList1" runat="server">
<ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle>
<HeaderTemplate>
<table width="900px">
<tr>
<td width="300px">
<b>Name</b>
</td>
<td width="300px">
<b>Account No</b>
</td>
<td width="300px">
<b>Company</b>
</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table width="900px">
<tr>
<td align="left" width="300px">
<%# DataBinder.Eval(Container.DataItem, "Name")%>
</td>
<td align="left" width="300px">
<%# DataBinder.Eval(Container.DataItem, "AccountNo")%>
</td>
<td align="left" width="300px">
<%# DataBinder.Eval(Container.DataItem, "Company")%>
</td>
</tr>
<tr>
<td align="left" width="300px">
<br />
</td>
<td align="left" width="300px">
<br />
</td>
<td align="left" width="300px">
<br />
</td>
</tr>
</table>
</ItemTemplate>
<HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle>
<SeparatorTemplate><br /></SeparatorTemplate>
</asp:DataList>
</div>
You can't have an empty row in the Datagrid if it isn't present in the data source. You have to think that after all the grid data is just a representation of your data source, if there is a empty row, the grid will show it, if there is not, it wont.
Write a stored procedure to get Output Parameter from sql server and bind to grid view if record is not there..
in my asp.net website i can only login in Firefox but not in chrome, internet explorer or safari.
here is my code :
string userName = LoginUserName.Text;
string password = LoginPassword.Text;
if (Page.IsValid)
{
if (Membership.ValidateUser(userName, password))
{
if (RemeberMe.Checked == true)
{
Response.Redirect("~/Home.aspx");
}
}
}
here is the login table :
<table>
<tr>
<td>
<asp:Label Text="Email:" AssociatedControlID="LoginUserName" runat="server"
id="LoginUserNamelabel" CssClass="label"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="LoginUserName" runat="server" Width="250px" CssClass="textbox"/>
<asp:RequiredFieldValidator id="LoginEmailRequired" runat="server" ControlToValidate="LoginUserName"
ErrorMessage="Email is required" ToolTip="Email is required"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label Text="Password:" AssociatedControlID="LoginPassword" runat="server"
ID="LoginPasswordlabel" CssClass="label"></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="LoginPassword" runat="server" TextMode="Password" Width="250px" CssClass="textbox" />
<asp:RequiredFieldValidator ID="PassRequired" runat="server" ControlToValidate="LoginPassword"
ErrorMessage="Password is Required" ToolTip="Password is Required"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:CheckBox ID="RemeberMe" runat="server" Text="Remember me" CssClass="RemeberMe" />
</td>
</tr>
<tr>
<td><br />
<asp:Button ID="LoginButton" runat="server" Text="Login" OnClick="autoLogin" CssClass="Button" />
</td>
</tr>
<tr>
<td><br />
<asp:Label ID="FailureText" runat="server" EnableViewState="false" Visible="false" CssClass="Lfaluire">
Wrong Email or Password</asp:Label>
</td>
</tr>
</table>
using the AspNetSqlMembershipProvider.
i am using asp.net 4.0 , what is the problem
thanks
You always validate the username and password, but then only actually redirect if the user has checked the "Remember me" - This looks wrong. Could there be a co-incidence that you ticked the box in some test sessions but not others? ;)
Also you're not actually storing the fact that the user has logged in anywhere, so won't you have problems later with the User.Identity.IsAuthenticated still being false?
You should be using something like
FormsAuthentication.RedirectFromLoginPage Method whether or not the checkbox is checked...
If you want to do the redirect yourself you should be using FormsAuthentication.SetAuthCookie and then doing the redirect.
EDIT: Something like this
string userName = LoginUserName.Text;
string password = LoginPassword.Text;
if (Page.IsValid)
{
if (Membership.ValidateUser(userName, password))
{
if (RemeberMe.Checked)
{
// Set your own cookie here or something that you will later check for in Page_Load etc
}
// Need to tell ASP.NET authentication was successful
System.Web.Security.FormsAuthentication.SetAuthCookie(userName, True)
Response.Redirect("~/Home.aspx");
}
}
If you are hitting http://localhost then most of the browsers won't save the cookie that's being generated by your membership provider.
If this is the case, access it by a name that has a dot in it. See:
Cookies on localhost with explicit domain
Are cookies enabled in all these browsers? The most common culprit to the out-of-the-box ASP.NET login stuff "not working" is because by default, they have no fallback for when cookies are disabled.
I have a table with 5 rows and 2 columns. Each cell contains a text box. I want to show error if one of the text boxes in each column is empty. I want both text boxes in a row shld be filled or both shld empty.
How can i do this via Asp.net validation controls?
I want to extend CompareValidator so that it will validate only if the controlToValidate and controlToCompare both have some text in it or both are empty.
You would need to use a CustomValidator and handle its ServerValidate event (and, optionally, its ClientValidationFunction for client-side validation). You could do one on the page and check all the rows, or you could have one per row and use the ControlToValidate property to give you context to the row you're validating.
Any example of the client-side validation is going to depend on your layout and any JavaScript framework that you're using. It might look something like this:
<table>
<tr>
<td><asp:TextBox runat="server" ID="TextBox11" /></td>
<td><asp:TextBox runat="server" ID="TextBox12" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox21" /></td>
<td><asp:TextBox runat="server" ID="TextBox22" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox31" /></td>
<td><asp:TextBox runat="server" ID="TextBox32" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox41" /></td>
<td><asp:TextBox runat="server" ID="TextBox42" /></td>
</tr>
<tr>
<td><asp:TextBox runat="server" ID="TextBox51" /></td>
<td><asp:TextBox runat="server" ID="TextBox52" /></td>
</tr>
</table>
<asp:CustomValidator ID="TextBoxPairValidator" runat="server" ControlToValidate="TextBox11" ClientValidationFunction="TextBoxPairValidator_ClientValidate" />
<script type="text/javascript">
(function () {
window.TextBoxPairValidator_ClientValidate = function (sender, args) {
var other = document.getElementById(sender.id.slice(0, -1) + '2');
args.IsValid = (sender.value === '' && other.value === '')
|| (sender.value !== '' && other.value !== '');
};
}());
</script>
That example obviously assumes a fairly simple layout, and fairly static naming (i.e. if your controls are in a naming container, you may not be able to use the ID trick to go from one text box to the other). Hopefully that's enough to get you started.