Я использую представление сетки asp.net для отображения данных таблицы базы данных на моем веб-сайте. Он работает нормально. Однако кнопка редактирования работает иногда и иногда дает мне ошибку. как я могу заставить его игнорировать ошибки. У меня также есть кнопка выбора, которая перенаправляет на новую страницу, где я могу редактировать строку, а также вести себя одинаково.
Вот код С#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Reporters_Main : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void cameraman_gridview_SelectedIndexChanged(object sender, EventArgs e)
{
//Label2.Text = reporters_gridview.SelectedRow.Cells[0].Text;
Session["id"] = reporters_gridview.SelectedRow.Cells[0].Text;
Response.Redirect("Reporters_Search.aspx");
//"You selected " + reporters_gridview.SelectedRow.Cells[0].Text + ".";
}
protected void btn_newrep_Click(object sender, EventArgs e)
{
Response.Redirect("Reporters_Form.aspx");
}
}
Вот html
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Reporters_Main.aspx.cs" Inherits="Reporters_Main" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<style type="text/css">
.style1
{
width: 90%;
height: 615px;
margin-right: 0px;
}
.style2
{
text-align: center;
}
.style6
{
text-decoration: underline;
text-align: center;
height: 10px;
}
.style7
{
height: 5%;
}
</style>
</head>
<body link="#ffffff">
<form id="form1" runat="server">
<div>
<table class="style1" align="center" width="100%">
<tr>
<td class="style6" align="center" valign="middle" bgcolor="White">
</td>
</tr>
<tr>
<td class="style2" align="center" valign="middle" bgcolor="#4A3C8C"
style="padding: 10px" height="10%">
<strong style="font-size: 32px; font-weight: bold; color: #FFFFFF;">REPORTERS
DETAILS</strong></td>
</tr>
<tr>
<td style="padding: 0px; text-align: right" align="center"
valign="middle" bgcolor="#E7E7FF" height="5%">
<asp:Button ID="btn_newrep" runat="server" style="margin-left: 0px"
Text="Add New" Width="10%" onclick="btn_newrep_Click" />
</td>
</tr>
<tr>
<td style="text-align: center; vertical-align: top;" align="center"
valign="top" height="70%"
width="100%">
<asp:GridView ID="reporters_gridview" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" BackColor="White"
BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px" CellPadding="3"
DataKeyNames="Reporter_ID" DataSourceID="SqlDataSource_Reporters"
GridLines="Horizontal" Width="100%" Height="100%" PageSize="20"
onselectedindexchanged="cameraman_gridview_SelectedIndexChanged">
<AlternatingRowStyle BackColor="#F7F7F7" />
<Columns>
<asp:BoundField DataField="Reporter_ID" HeaderText="Reporter_ID"
SortExpression="Reporter_ID" InsertVisible="False" ReadOnly="True">
</asp:BoundField>
<asp:BoundField DataField="Reporter_Name" HeaderText="Reporter_Name"
SortExpression="Reporter_Name" >
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Reporter_Email" HeaderText="Reporter_Email"
SortExpression="Reporter_Email" >
<ItemStyle HorizontalAlign="Left" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="Reporter_Mobile" HeaderText="Reporter_Mobile"
SortExpression="Reporter_Mobile" />
<asp:CommandField ShowSelectButton="True"
ShowEditButton="True">
<ItemStyle BackColor="#4A3C8C" ForeColor="White" />
</asp:CommandField>
</Columns>
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<PagerSettings Mode="NumericFirstLast" />
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
<RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<SortedAscendingCellStyle BackColor="#F4F4FD" />
<SortedAscendingHeaderStyle BackColor="#5A4C9D" />
<SortedDescendingCellStyle BackColor="#D8D8F0" />
<SortedDescendingHeaderStyle BackColor="#3E3277" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource_Reporters" runat="server"
ConnectionString="<%$ ConnectionStrings:IngestConnectionString %>"
SelectCommand="SELECT [Reporter_ID], [Reporter_Name], [Reporter_Email], [Reporter_Mobile] FROM [Reporter] ORDER BY [Reporter_ID], [Reporter_Name]"
ConflictDetection="CompareAllValues"
DeleteCommand="DELETE FROM [Reporter] WHERE [Reporter_ID] = @original_Reporter_ID AND (([Reporter_Name] = @original_Reporter_Name) OR ([Reporter_Name] IS NULL AND @original_Reporter_Name IS NULL)) AND (([Reporter_Email] = @original_Reporter_Email) OR ([Reporter_Email] IS NULL AND @original_Reporter_Email IS NULL)) AND (([Reporter_Mobile] = @original_Reporter_Mobile) OR ([Reporter_Mobile] IS NULL AND @original_Reporter_Mobile IS NULL))"
InsertCommand="INSERT INTO [Reporter] ([Reporter_Name], [Reporter_Email], [Reporter_Mobile]) VALUES (@Reporter_Name, @Reporter_Email, @Reporter_Mobile)"
OldValuesParameterFormatString="original_{0}"
UpdateCommand="UPDATE [Reporter] SET [Reporter_Name] = @Reporter_Name, [Reporter_Email] = @Reporter_Email, [Reporter_Mobile] = @Reporter_Mobile WHERE [Reporter_ID] = @original_Reporter_ID AND (([Reporter_Name] = @original_Reporter_Name) OR ([Reporter_Name] IS NULL AND @original_Reporter_Name IS NULL)) AND (([Reporter_Email] = @original_Reporter_Email) OR ([Reporter_Email] IS NULL AND @original_Reporter_Email IS NULL)) AND (([Reporter_Mobile] = @original_Reporter_Mobile) OR ([Reporter_Mobile] IS NULL AND @original_Reporter_Mobile IS NULL))">
<DeleteParameters>
<asp:Parameter Name="original_Reporter_ID" Type="Int32" />
<asp:Parameter Name="original_Reporter_Name" Type="String" />
<asp:Parameter Name="original_Reporter_Email" Type="String" />
<asp:Parameter Name="original_Reporter_Mobile" Type="String" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Reporter_Name" Type="String" />
<asp:Parameter Name="Reporter_Email" Type="String" />
<asp:Parameter Name="Reporter_Mobile" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="Reporter_Name" Type="String" />
<asp:Parameter Name="Reporter_Email" Type="String" />
<asp:Parameter Name="Reporter_Mobile" Type="String" />
<asp:Parameter Name="original_Reporter_ID" Type="Int32" />
<asp:Parameter Name="original_Reporter_Name" Type="String" />
<asp:Parameter Name="original_Reporter_Email" Type="String" />
<asp:Parameter Name="original_Reporter_Mobile" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
</td>
</tr>
<tr>
<td align="center" valign="middle" bgcolor="#4A3C8C" class="style7"
width="100%">
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Вот ошибка. (Иногда я получаю эту ошибку. В большинстве случаев это нормально, и она обновляет таблицу)
System.Data.SqlClient.SqlException was unhandled by user code
HResult=-2146232060
Message=String or binary data would be truncated.
The statement has been terminated.
Source=.Net SqlClient Data Provider
ErrorCode=-2146232060
Class=16
LineNumber=1
Number=8152
Procedure=""
Server=.
State=4
StackTrace:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Search_Reporters.btn_Save_Click(Object sender, EventArgs e) in c:\Users\Gerard\Desktop\Ingest\Reporters_Search.aspx.cs:line 61
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:
определить причину ошибки и попытаться "исправить" ее, или, альтернативно, установить условия или попытку уловить, чтобы предотвратить появление ошибки (в крайнем случае, попытка первой)
Вы должны указать некоторые правильные коды своей ошибки.