日付検索に問題がある古い .NET 2.0 サイトで作業しています。
MM/DD/YYYY
数時間のトラブルシューティングの後、送信されている検索パラメーターが形式になっており、SQL Server が期待しているという結論に達しました。DD/MM/YYYY
これを修正する方法がわかりません。
私はそれを ( .ToString("dd/MM/yyyy")
) で文字列に変換してから に戻そうとしましたDateTime
。nullableである必要があるため、これは機能しませんDateTime
CS1502: 'TableAdapters.Artist_ListTableAdapter.GetData(int, System.DateTime?, System.DateTime?, int?, int?, bool?, string, string, string, int?, int?, int? , int?, int?, out int?)' には無効な引数があります
現在、SQL Server ストアド プロシージャについてあまり理解していないため、そのGetData
関数の見方がわかりません。右クリックして定義に移動すると、生成された c# ページが表示されます。
何か助けはありますか?
編集:@BigMこれが役立つかどうかはわかりませんが:
Var 宣言:
public DataTable dtArtist = new DataTable();
public string cp_basePath;
public int pagecount;
int CultureId ;
DateTime? startDate;
DateTime? endDate;
int? disciplineId = null;
int? minimumGradelevel = null;
int? maximumGradelevel = null;
int? languageId = null;
bool? isFeatured = null;
int? educationalInitiativeId = null;
string EducationalInitiativeIds = string.Empty;
string sortColumnName = string.Empty;
string searchCriteria = string.Empty;
クエリ文字列から取得:
private void GetQueryStrings()
{
CultureId = objGeneralLayer.plCultureId;
if (Request.QueryString["StartDate"] != null)
startDate = Convert.ToDateTime(Request.QueryString["StartDate"].ToString(), CultureInfo.InvariantCulture);
if (Request.QueryString["EndDate"] != null)
endDate = Convert.ToDateTime(Request.QueryString["EndDate"].ToString(), CultureInfo.InvariantCulture);
if (Request.QueryString["DisciplineId"] != null)
disciplineId = Convert.ToInt32(Request.QueryString["DisciplineId"].ToString());
if (Request.QueryString["MinGrade"] != null)
minimumGradelevel = Convert.ToInt32(Request.QueryString["MinGrade"].ToString());
if (Request.QueryString["MaxGrade"] != null)
maximumGradelevel = Convert.ToInt32(Request.QueryString["MaxGrade"].ToString());
if (Request.QueryString["LanguageId"] != null)
languageId = Convert.ToInt32(Request.QueryString["LanguageId"].ToString());
if (Request.QueryString["Featured"] != null)
isFeatured = Convert.ToBoolean(Request.QueryString["Featured"].ToString());
if (Request.QueryString["EducatIds"] != null)
EducationalInitiativeIds = Request.QueryString["EducatIds"].ToString();
if (Request.QueryString["Criteria"] != null)
searchCriteria = Request.QueryString["Criteria"].ToString();
}
その後、コードで次のように記述します。
dtArtist = objArtistLayer.getArtistList(CultureId,startDate, endDate, disciplineId, languageId, minimumGradelevel, maximumGradelevel, isFeatured, sortColumnName, searchCriteria, EducationalInitiativeIds, Stakeholder, currPage, pageSize, out rowCount);
その後、次のようになります。
public DataTable getArtistList( int CultureId ,
DateTime? StartDate
,DateTime? EndDate
,int? DisciplineId
,int? LanguageId
,int? MinimumGradeLevel
,int? MaximumGradeLevel
,bool? IsFeature
,string ColumnName
,string Criteria
,string EducationalInitiativeIds
,int ? StakeholderId
,int StartPage
,int PageSize
,out int RowCount
)
{
int? count = 0;
StartDate = Convert.ToDateTime(StartDate);
DataTable dt = new DataTable();
TableAdapters.Artist_ListTableAdapter ada = new TableAdapters.Artist_ListTableAdapter();
dt = ada.GetData(CultureId
, StartDate
, EndDate
, MinimumGradeLevel
, MaximumGradeLevel
, IsFeature
, ColumnName
, Criteria
, EducationalInitiativeIds
, StakeholderId
, DisciplineId
, LanguageId
, StartPage
, PageSize
, out count
);
RowCount = (int)count;
return dt;