|
This problem can be solved if u use datatable.
The data that was present on the data grid just fill this data to datatable and then the new searched data will also be filled in the same datatable then bind this datatable to the grid so that the previous data will not be lost.
|
|
|
|
|
Hi Mani,
in your problem, u can save your last data in datatable variable.
To use session variable,
Session["mySearchResult"] = searchResultTable;
searchResultGridView.DataSource = searchResultTable;
searchResultGridView.DataBind();
When u search new keyword and return data back from server, save it in temp table.
then retrieve your previous saved table from Session. and Loop through every row again
and add it into old table and re-save it to Session.
newSearchResultTable =
searchResultTable = Session["mySearchResult"] as DataTable;
foreach(DataRow row in newSearchResultTable.Rows)
{
searchResultTable.Rows.Add(row);
}
Session["mySearchResult"] = searchResultTable;
searchResultGridView.DataSource = searchResultTable;
searchResultGridView.DataBind();
Hint: when u enable the "EnableViewState " to false, your selected info will not be avaliable from the server.
Hope it works,
|
|
|
|
|
Dear all,
In my login page, im showing a captcha to the user ofter 3 unsuccessfull attempts.
this works fine, only if the user closes the browser and reopen it, the session is lost, so then he has again 3 chances to login without seeing the captcha.
i want to prevent this, i want still to show the captcha even in that case.
My question is, what is the best way to achieve that? by storing the ip address of the client? is it possible to get the ip address of the client always? even through proxies and firewalls?
Or maybe other suggestion?
Thanks in advance.
|
|
|
|
|
A client will always have an external IP even through firewalls and proxies but firewalls can be spoofed.
The main idea of a cpatcha is to prevent bots from auto creating accounts.
Another technique i saw was to create an empty input field and hide it, set it to an email type field , and if that field has a value on submit it means a bot attempted to sign up and you can deny the action
Chona1171
Web Developer (C#), Silverlight
|
|
|
|
|
Hi
Can anybody help me please.
when i try to login in my asp.net 4 page with the following source code an error returns:
DataTable dt = new DataTable();<br />
DataSet ds = new DataSet();<br />
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["SN11ConnectionString"].ConnectionString);<br />
SqlCommand sqlCmd = new SqlCommand("SELECT UserId FROM [Users] WHERE ([Email]=@Email AND [Password]=@Password", sqlConn);<br />
SqlParameter paramEmail;<br />
paramEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 25);<br />
paramEmail.Value = TextBoxLoginEmail.Text;<br />
sqlCmd.Parameters.Add(paramEmail);<br />
<br />
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();<br />
byte[] hashedBytes;<br />
UTF8Encoding encoder = new UTF8Encoding();<br />
hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(TextBoxLoginPassword.Text));<br />
SqlParameter paramPwd;<br />
paramPwd = new SqlParameter("@Password", SqlDbType.Binary, 16);<br />
paramPwd.Value = hashedBytes;<br />
sqlCmd.Parameters.Add(paramPwd); <br />
<br />
sqlConn.Open();<br />
SqlDataAdapter sda = new SqlDataAdapter(sqlCmd);<br />
sda.Fill(ds);<br />
dt = ds.Tables[0];
Here is the error message that appears when i press the login button:
Incorrect syntax near '@Password'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Incorrect syntax near '@Password'.
Source Error:
Line 57: sqlConn.Open();
Line 58: SqlDataAdapter sda = new SqlDataAdapter(sqlCmd);
Line 59: sda.Fill(ds);
Line 60: dt = ds.Tables[0];
Line 61: }
Thank you.
|
|
|
|
|
Farhad Eft wrote: paramPwd = new SqlParameter("@Password", SqlDbType.Binary, 16);
SqlDbType.Binary for Password? Please check the data type.
|
|
|
|
|
yeah it's binary
because I'd like to store and retrieve the encrypted edition.
|
|
|
|
|
new SqlCommand("SELECT UserId FROM [Users] WHERE ([Email]=@Email AND [Password]=@Password", sqlConn);
u miss ")". check it.
C# コードMicrosoft End User
2000-2008
「「「「「「「「「「「「「「「「「「「「「「「「「「「「
The best things in life are free
」」」」」」」」」」」」」」」」」」」」」」」」」」」」
|
|
|
|
|
where did i miss it?
i can't see it!
|
|
|
|
|
OOPS!
yeah you are right
I'm such an idiot! lol
Thank you so much!
|
|
|
|
|
you're welcome. lol.
C# コードMicrosoft End User
2000-2008
「「「「「「「「「「「「「「「「「「「「「「「「「「「「
The best things in life are free
」」」」」」」」」」」」」」」」」」」」」」」」」」」」
|
|
|
|
|
I would think a hashed password, even of a password only a few characters long, might be considerably longer than 16 bytes? Not sure, but could that be the problem?
Edit: Sorry I think I have put you wrong. I was thinking the hex version of hashes possibly.
modified on Saturday, April 2, 2011 5:13 PM
|
|
|
|
|
hi, the problem is simple. look your sql deeply. there is an error
You sql = SELECT UserId FROM [Users] WHERE ([Email]=@Email AND [Password]=@Password
hope u got the mark.
there is a open bracket be the email which will fail the query result.
Good luck.
|
|
|
|
|
Hi
I have a DetailsView on the page and I have made one of the fields a TemplateField. In the EditItemTemplate and InsertItemTemplate I have a DropdownList that is databound to a table in my Sql Server database. I wanted to add an initial value to the DropdownList namely “- select -” .
I set the AppendDataBoundItems property to true and added the initial value as a ListItem.
Markup of the DropdownList
<asp:DropDownList ID="DropDownList_HP" runat="server"
AppendDataBoundItems="True" DataSourceID="SqlDataSource_HP"
DataTextField="Hospital" DataValueField="H_ID" SelectedValue='<%# Bind("H_ID") %>' Enabled="True">
<asp:ListItem>- select -</asp:ListItem>
</asp:DropDownList>
I also added a RequiredFieldValidator to ensure that a value is selected.
<asp:RequiredFieldValidator ID="RequiredFieldValidatorDV4" runat="server"
ControlToValidate="DropDownList_HP"
ErrorMessage="Select a referring hospital"
InitialValue="- select -" ValidationGroup="PatientInputGroupDV4" SetFocusOnError="True"></asp:RequiredFieldValidator>
This works fine for new input. The problem is however that the database already has records that were entered through a Windows Application and many of these records has a null value in this field and exceptions are thrown when I tried to open these records and the system tried to set the SelectedValue of the DropdownList.
After some more searching I found this help http://msdn.microsoft.com/en-us/library/ms366709.aspx
So I changed the ListItem in the DropDownList markup to the following:
<asp:DropDownList ID="DropDownList_RefHospDV4" runat="server"
AppendDataBoundItems="True" DataSourceID="SqlDataSource_RefHosp"
DataTextField="HospShort" DataValueField="HospID" SelectedValue='<%# Bind("HospID") %>' Enabled="True">
<asp:ListItem Selected="True" Value="">- select -</asp:ListItem>
</asp:DropDownList>
This now solved the problem of opening a record where the value is null in the database, BUT now the RequiredFieldValidator is not validating anymore to make sure that a databound item is selected for this field and not the initial value “- select -”. So basically now it is not checking anymore to see if valid input has been entered for the DropDownList and it accepts “- select -” thus it acts as if the field is not a required field anymore.
In short what is required is that I want to make sure that the user enters a valid selection in the DropDownList, but it must also cater for old records that do not have this field entered yet so that those old records can be opened in the DetailsView .
Opening Old records (with null in that field):
When these old records are opened in the DetailsView the DropDownlist should show “- select -” when the value in the database is null.
Saving records (old or new records):
When saving the record in Insert mode or Update mode the RequiredFieldValidator should show that a valid input is not selected if the DropDownList is still on “- select -”.
Does anyone have any solutions for me for the problem.
Regards.
Kobus
|
|
|
|
|
Hi Kobus,
I suggest this solution:
use javascript to check ur default value b4 post it to server.
<script type="text/javascript">
var sDropDownList_HP = '<%=DropDownList_HP.ClientID %>';
function validateHospitalDropDownList()
{
var ddlHP = document.getElementById(sDropDownList_HP);
if(ddlHp.selectedIndex<1){
return false;
}
else{
return true;
}
}
</script>
In your asp code: there may be some button click event to post back to server:
I assume u have that button,
<asp:Button ID="Button1" runat="server" OnClientClick="if(!validateHospitalDropDownList())return false;" Text="Submit" />
then add attribute OnClientClick and assign JS function to it, if this function return true, the form will post back
normally, else no post back will occur. you can also add some code to show error msg in the JS function.
Hint: in Data Null case, u can use ISNULL('value that can be null', 'new replace value'); function from SQL.
Hope that works!
|
|
|
|
|
Hi mates,
I have a program in asp.net which will print a report viewer to the default printer. When the user
clicked the print button. It will automatically print to default printer. I'm using the System.Drawing.Printing.PrinterSettings for getting the default printer.
Here's the snippet code:
Protected Sub btnPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrint.Click
Try
Dim rptViewer As ReportViewer
rptViewer = New ReportViewer
With rptViewer.LocalReport
.DataSources.Clear()
.ReportPath = Server.MapPath("rptCert.rdlc") '(IM USING RDLC INSTEAD OF CR)
.DataSources.Add(dataSource)
.Refresh()
End With
myRPT= New CustPrint
With myRPT
.Export(rptViewer.LocalReport)
.m_currentPageIndex = 0
.Print()
End With
Catch ex As Exception
log.Debug(ex.ToString)
End Try
End Sub
----CLASS-----
Public Class CustPrint
' Implements IDisposable
Public m_currentPageIndex As Integer
Public m_streams As IList(Of Stream)
Public stName As String
'create steam
Public Function CreateStream(ByVal name As String, ByVal fileNameExtension As String, _
ByVal encoding As Encoding, ByVal mimeType As String, ByVal willSeek As Boolean) As Stream
Dim stream As Stream = New FileStream("C:\" + name + "." + fileNameExtension, FileMode.Create)
m_streams.Add(stream)
Return stream
End Function
'Export
Public Sub Export(ByVal report As LocalReport)
Try
Dim deviceInfo As String = _
"<DeviceInfo>" + _
" <OutputFormat>EMF</OutputFormat>" + _
" <PageWidth>8.5in</PageWidth>" + _
" <PageHeight>11in</PageHeight>" + _
" <MarginTop>0.25in</MarginTop>" + _
" <MarginLeft>0.25in</MarginLeft>" + _
" <MarginRight>0.25in</MarginRight>" + _
" <MarginBottom>0.25in</MarginBottom>" + _
"</DeviceInfo>"
Dim warnings() As Warning = Nothing
m_streams = New List(Of Stream)()
report.Render("Image", deviceInfo, AddressOf CreateStream, warnings)
Dim stream As Stream
For Each stream In m_streams
stream.Position = 0
Next
Catch ex As Exception
Dim inner As Exception = ex.InnerException
While Not (inner Is Nothing)
'MsgBox(inner.Message)
inner = inner.InnerException
End While
End Try
End Sub
'metafile
Public Sub PrintPage(ByVal sender As Object, _
ByVal ev As PrintPageEventArgs)
Dim pageImage As New Metafile(m_streams(m_currentPageIndex))
ev.Graphics.DrawImage(pageImage, ev.PageBounds)
m_currentPageIndex += 1
ev.HasMorePages = (m_currentPageIndex < m_streams.Count)
End Sub
'print
Public Sub Print()
Dim printerName As String = DefaultPrinterName()
If m_streams Is Nothing Or m_streams.Count = 0 Then
Return
End If
Dim printDoc As New PrintDocument()
printDoc.PrinterSettings.PrinterName = printerName
If Not printDoc.PrinterSettings.IsValid Then
Dim msg As String = String.Format("Can't find printer ""{0}"".", printerName)
'Console.WriteLine(msg)
Return
End If
AddHandler printDoc.PrintPage, AddressOf PrintPage
printDoc.Print()
If Not (m_streams Is Nothing) Then
Dim stream As Stream
For Each stream In m_streams
stream.Close()
Next
m_streams = Nothing
End If
End Sub
----FUNCTION ------
Public Function DefaultPrinterName() As String
Dim oPS As New System.Drawing.Printing.PrinterSettings
Try
DefaultPrinterName = oPS.PrinterName
Catch ex As System.Exception
DefaultPrinterName = ""
Finally
oPS = Nothing
End Try
End Function
Unfortunately, this code will work only in the server, instead to the client computer.
I want a solution/way/approach on how to get the client printer? I want to print an rdlc report at any client not only on the server.
Thank you in advance.
C# コードMicrosoft End User
2000-2008
「「「「「「「「「「「「「「「「「「「「「「「「「「「「
The best things in life are free
」」」」」」」」」」」」」」」」」」」」」」」」」」」」
|
|
|
|
|
That isn't how asp.net works. As you have discovered code-behind runs on the server not the client. The only way to use a client resouce such as a printer is to use ActiveX which is troublesome at best.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
i've searched on google with ActiveX and i found a code which will get the printers of server or client which is good.like this
<br />
var server="10.1.254.222"; 'change to client ip<br />
var shell = new ActiveXObject("wscript.shell");<br />
var result = shell.Exec("net view \\\\" + server).StdOut.ReadAll();<br />
var line = new Array();<br />
... and so on.
but the problem of the above code will get the list of printers which are shared.
C# コードMicrosoft End User
2000-2008
「「「「「「「「「「「「「「「「「「「「「「「「「「「「
The best things in life are free
」」」」」」」」」」」」」」」」」」」」」」」」」」」」
|
|
|
|
|
It is generalyy a bad idea to use ActiveX control, they are difficult, cumbersome and prone to security issues. Users can disable them and admins can restritct them. They are also only usable in IE. Make the report available and let the use choose which printer.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Hi
I Was try to get value for label by JavaScript but I got Problem with reading the value it's NULL
|
|
|
|
|
you must be more explicit with your request.
what are you trying to do and what code are you writing,
where is the Label, in master page or in the page, from where are you calling it???
|
|
|
|
|
this is my code
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"><br />
<script type="text/javascript" src="js/timer.js"></script><br />
<script type="text/javascript"><br />
window.onload = WindowLoad;<br />
function WindowLoad(event) {<br />
<br />
ActivateCountDown("CountDownPanel1", document.getElementById('lbltime').value, "CountDownEnded1");<br />
<br />
}<br />
<br />
function CountDownEnded1() {<br />
alert("Time End");<br />
location.reload(true);<br />
}<br />
<br />
</script><br />
<asp:Label ID="lbltime" runat="server" Visible="false"></asp:Label>
I Want to get the text in "lbltime" to my code
|
|
|
|
|
ok, if you notice, you are asking for the value of the Label(lbltime) but it has not a text property which will be the equivalent of "Value".
So what you have to do is something like:
<br />
<asp:Label ID="lbltime" runat="server" Visible="false" Text="sometext"></asp:Label><br />
or if you are assigning a value (Text) from the server side, you must do it before the form call for the javascritp code, in Page_Prerender event.
|
|
|
|
|
El_Programmer wrote: if you are assigning a value (Text) from the server side, you must do it before the form call for the javascritp code, in Page_Prerender event.
What?
You are not even close to what the problem is. JavaScript object do have a Value property.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
i mean if you want to assign any text to your label(lbltime) from the server side, in Page_Load or Page_Prerender.
because when you call your javascript code your label has no text, that is why you are getting and NULL value.
did you get it?
|
|
|
|