[英]Why “System.IndexOutOfRangeException” occurs for string in ajax using ASP.Net?
實際上,如果我刪除了一個特定的string
變量,我的ajax代碼將運行完美
我正在調用ajax,然后服務器將從SQL Server中選擇一些數據並將其存儲到字符串變量中。 除一個變量外,每個變量均完美返回。 當我檢查控制台時,它返回異常“ System.IndexOutOfRangeException ”
這是我的ajax代碼
$('.list-of-link').on('click', 'a', function (e) {
e.preventDefault();// add this line
alert($(this).html());
//window.location.replace("ReportTotalSalesPivot.aspx");
var userFileName = $(this).html();
$.ajax({
url: 'SavedReports.aspx/getReportDetails',
method: 'post',
contentType: 'application/json',
data: '{userFileName:"' + userFileName + '"}',
dataType:'json',
success: function (data) {
alert('success : ReportData = ' + data.d.ReportData);
},
error: function (error) {
alert('Please Call Administrator');
}
})
})
WebMethod代碼
[WebMethod]
public static SavedReport getReportDetails(string userFileName)
{
string cs = ConfigurationManager.ConnectionStrings["HQWebMatajer13"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "select ReportData,ReportFilter,FromDate,ToDate,SelectedData,SelectedCoulmn,SelectedRow,HiddenTableRecord ToDate FROM [HQWebMatajer].[dbo].[ReportSave] where UserID=@UserID and UserFileName=@UserFileName";
cmd.Parameters.AddWithValue("@UserID", UserID);
cmd.Parameters.AddWithValue("@UserFileName", userFileName);
con.Open();
SavedReport savedReport = new SavedReport();
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
byte[] binaryString = (byte[])rd["ReportData"];
savedReport.ReportData = Encoding.UTF8.GetString(binaryString);
savedReport.ReportFilter = rd["ReportFilter"].ToString();
savedReport.FromDate = rd["FromDate"].ToString();
savedReport.ToDate = rd["ToDate"].ToString();
savedReport.SelectedData = rd["SelectedData"].ToString();
savedReport.SelectedColumn = rd["SelectedCoulmn"].ToString();
savedReport.SelectedRow = rd["SelectedRow"].ToString();
savedReport.HiddenTableRecord = rd["HiddenTableRecord"].ToString();
}
return savedReport;
}
}
最后一個變量 HiddenTableRecord
發生錯誤
以下記錄是SQL Server
tq.StoreID$$$ IN('1001')$$$
HiddenTableRecord
實際記錄
SavedReport類代碼
public class SavedReport
{
public string UserID { get; set; }
public string ReportName { get; set; }
public string UserFileName { get; set; }
public string ReportData { get; set; }
public string ReportFilter { get; set; }
public string FromDate { get; set; }
public string ToDate { get; set; }
public string SelectedData { get; set; }
public string SelectedColumn { get; set; }
public string SelectedRow { get; set; }
public string HiddenTableRecord { get; set; }
}
錯誤味精
{消息:“ HiddenTableRecord”,…}
ExceptionType:“ System.IndexOutOfRangeException”
訊息:“ HiddenTableRecord”
注意
如果我對此行發表評論,則
savedReport.HiddenTableRecord = rd["HiddenTableRecord"].ToString();
。 不會發生錯誤,它會返回我期望的所有記錄
問題來了,因為您的SqlDataReader
不包含“ HiddenTableRecord”
也許您的SqlRequest中有一個問題(示例中HiddenTableRecord和ToDate之間缺少逗號):
“從[HQWebMatajer]中選擇ReportData,ReportFilter,FromDate,ToDate,SelectedData,SelectedCoulmn,SelectedRow,HiddenTableRecord 和 ToDate。[dbo]。[ReportSave]其中UserID = @ UserID和UserFileName = @ UserFileName”;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.