Forms Data Controls ::Created Unique Index, When Exception Occurs On Update?
May 5, 2010
using vb.net/asp.net 2005 and SQL Server 2005.I had similar issue yesterday: I created a unique index on a table to prevent duplicates when user tries to edit existing records in a gridview.This works fine and I am seeing the "cannot insert duplicate key row message...." however I need to catch the exception because I do not want to display the table and column names.I have this set up but its not catching the exception, the exception is displaying but not my version, does anyone know in what gridview event and how I can catch and customize this exception? what i have now (but not working ) is:
I am working on a 3-tier asp.net application. Currently I'm stuck up in a situation where I need to handle a specific type of exception (User Defined) in DAL and Show alert to the user if that exception occurs in DAL.
I tried following things:
1) I raised that exception from the DAL and catch it in BLL and throw a new BLL exception to for that DAL exception and finally catch it in the UI layer to show the alert to the user. I've successfully implement this in my project. But there are some issues in this approach. First of all I feel this is not right way to do this as it may lead to performance related issues. Secondly, the application contains more than 500 pages and classes. so I need to attach additional catch block in every method to catch the BLL exception. which is the last option i'd like to take.
2) in second approach I logged the the DAL exception into a text file. but problem in this approach is that how could the UI layer know that exception has occurred and show the alert to the user. Is there any event in asp.net where i could handle all this activities?
my question is what is the best approach to handle this type of situation? Will Exception handling block help me in this?
I've tried reading many articles on this but i couldn't get an answer for my question? I might not be using right keywords for my search.
I have used the DataKeyNames property of the GridView to assign the column name whose visible property is set to false to get the cells value when the column is kept invisible. But, sometimes there is an error on this line of code - string cellValue = GridView.DataKeys[e.NewEditIndex].Value.ToString(); Following Error is generated -
Server Error in '/' Application. Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index 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.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
A dataview is throwing an out of range exception when a page submit button is clicked. The strange part is if you change the data in the dataview by selecting a different person in the DDL the page works fine. Its only when the page loads and the default person in the DDL is when the DataView throws the exception.
The exception is thrown on the last line when I add DV.Rows(0).Cells(1).Text to the id_num parameter. I know there is a value in the dataview because it is displayed on the page. I can refresh the dataview with another person's information and the code works fine. This really has me confused. Here is a bit of the code behind.
Dim dashDataSource As New SqlDataSource() dashDataSource.ConnectionString = ConfigurationManager.ConnectionStrings("SSSConnectionString2").ToString() dashDataSource.InsertCommandType = SqlDataSourceCommandType.Text dashDataSource.InsertCommand = "INSERT INTO tblAcadReferrals(all columns and parameter info here)" dashDataSourceInsertParameters.Add("id_num", DV.Rows(0).Cells(1).Text)
In my application I am accessing my DB using simple stored procedure..but My code got exception....while I debug the code I have seen that the code is executed successfully and while the whole try block has been executed then the code call the exception but more ridiculously without any kind of error..here is my code
i've dynamically created new rows on button click in gridview with 3 dropdownlist.for the first default row the selectindexchanged is firing and on pageload 1st ddl is loading with values and basing on selection the second ddl is showing values and third ddl is showing basing on second ddl. Now, when i click add new row, a new row is created with 3 ddl's ...1st one is showing properly but when i select from that ddl ,it should show data accordingly but its not showing particular data but showing all realted data from DB.same for 3rd ddl.
Also when new row is added and the first ddl is selected on postback the second ddl data is refreshing..
I was putting all my editing code in my RowCommand event method. This works fine for everything except "update". I am not receiving a row index. I am getting one for "delete" and that works fine, but none for "Update"
I have a gridview where I am opening a popup page when user selects a row. If I am not using update panel then Select button is able to open popup page.
If I am adding Update panel, the popup page is unable to open. What could be the cause?
I m getting Problem in Tab Index Setting of Dynamic Created Controls. There are 6 Drop down dynamic created and also Two user controls which contains text boxes. There are also Static Controls on a Page. How i set tab index for all controls. I have try to give from code behind using TabIndex property But it's not working and Tab order get destory.
In ASP.NET should we call Session.Abandon() when an unhandled exception occurs?There are many end users that hit "refresh" or "back" in the web browser in order to resubmit the request.I would like to prevent this behavior by resetting the context.TIA.
I have a gridview based on two dropdown lists. The first list limits the values of the second dropdown list. On page load all available results are inserted into the gridview. After selection of the dropdown list, the gridview is refreshed with data limited to the two selections. This will result in 200 rows of available data. The user can select the page they want to go to using the page index.
They will then select the row to edit. Everything is fine up to here. Then the user will update the record with the appropriate data from the dropdown lists in the gridview or update the text box as necessary. They hit the update selection and the row is updated. The only problem is that they are brought back to the first page in the index. Since most of these people will be working through the list relatively in order, it would be nice if they could stay on the page they were working on rather than going back to the beginning every time. Is there a way to go back to the same pageindex they were at when they started the update?
I am including my code. I tried to use a variable for the pageindex as well as the selected values of the dropdown lists but I am quite sure I have applied them in the wrong places.
I'm trying (SQL Server Compact) to add primary key constraint on existing table that has some rows in it. While adding primary key I'm getting the error:
"A duplicate key cannot be inserted into a unique index"
I am new to asp.net, so this might be a basic question. But I am struggling on this for more time... I have loaded a COM object in Server script using code behind (C#) and that COM object will trigger events in some random interval. I need to update the client page whenever I receive an event from the COM object from server side (code behind).My question is, Is there a way to make the client page do postback from the code behind(C#)? ie., The client page needs to be updated whenever an event occurs in the server. Is that possible? The com event does not trigger a postback since it only occurs in the server and not in the client.
How do i change the name column text the current row when the selected index of drop down is changed? ex:first row is mudassar khan and belgium, when i change belgium i want mudassar to be replaced to a name which i fetch from database....
I have a view created that I want to use as my datasource, however to enable to generate insert/update commands it specifies I must have all primary keys selected. Is there a way to set a column as a PK, or unique, within an already created view? And how?
i have a webform which has got required field validators. when the user doesnt enter values and clicks submit button it should not cause postback. i have set CausesValidation="True" on the submit button.hen the user clicks submit button without entering values, validation occurs( red * marks are shown) but the postback also occurs.
I've procedure that does the below task.1. Create a #table from an existing table2. Insert data into the temp table, this copies few duplicate records into my temp table3. After insert, I'm creating a cluster index for the temp table to enhance my search option later.While creating the Index, I get the below message.[CREATE UNIQUE INDEX terminated because a duplicate key was found for index ID 1. Most significant primary key is 'type ad, len 16'.
When I get an exception message like this I want an Exception Class name to compare.Not wantto compare a string to match with substring.when I get an unique constraint error like this below how can I control if error exception type is exactly sqlserver unique constraint error ?:
catch (Exception ex) { if (ex.class==SQLUniqueException) blahblah(); };
Using vb.net/asp.net 2005 and SQL Server 2005:I have a unique constraint setup to prevent users from entering duplicate email addresses in my online system.When a user tries to edit an existing email to one that already exists (add a duplicate) it shows the following<ERROR>Cannot insert duplicate key row in ojbect "dbo.someTableName" with unique index.....The statement has been terminated This prevents the user from adding duplicates which is good but I would like to provide a more user friendly exception message and I do not want to show the table and field names to the user.
I have a gridview that is using a SQLdataSource with an update statement and I am able to print out the update statement listed in the SQLDataSource by doing this:
[Code]....
but for some reason the record is not being updated so I want to know how do I print out the entire Update statement, including the value of the EmailAddressID to make certain that the update statement is being set correctly?
I can test the update statement above manually, taking the EmailAddressID for that record and then run the update statement manually using SQL Server Mgmt then it updates the record correctly so I know the update statement set in the SQLDataSource is ok. However I still want to print out the update statement that is supposed to be executed in the vb code, how to do this?
I see there is an event called "SqlDataSource1_Updating",
is it possible to print out the actual update statement there?
Just to be clear in the asp.net page I want to do something to print out the actual full update statement, ex:
<SQL> UPDATE [EmailTable] SET [EmailAddress] = @EmailAddress WHERE [EmailAddressID] = 22 </SQL>