DataTable 다 열 합병 문제 쉽게 해결

2852 단어 datatable병합 열
문제 배경:시험 시스템 에서 수 동 으로 시험지 부분 을 만 들 때 문제 라 이브 러 리 의 표 구조 가 다 르 기 때문에 같은 Gridview(템 플 릿 화 된 것,그 구조 가 고정 되 어 있 음)가 표 시 될 때 서로 다른 구조의 데 이 터 를 동시에 만 들 수 없습니다.GridView 구 조 는 다음 과 같다 이러한 고정된 형식 은 선택 문 제 를 대표 하 는 데이터 구 조 를 나타 내 지만 선택 문제 라 이브 러 리 구조 와 논술 문제 라 이브 러 리 구조 가 다 르 기 때문에 논술 문 제 를 대표 하 는 데이터 구 조 를 직접 표시 할 수 없다.이 때 어떻게 고정된 GridView 에 다른 데 이 터 를 표시 합 니까?사실 자세히 살 펴 보면 그들의 유일한 차 이 는'답'이라는 열의 데이터 가 다르다 는 것 을 알 수 있다.선택 문제 유형 에서 이 필드 의 값 은 하나의 옵션 에 불과 하지만 논술 문제 등 유형 에 대해 그 문 제 는 6 개 이 고 대응 하 는 답 도 6 열 이 있어 야 한다.여기 서 최종 적 으로 해결 해 야 할 문 제 는 어떻게 6 열의 답 을 1 열 에 표시 하 는 지 정리 할 수 있다.해결 방법:여섯 필드 의 내용 을 sql 문장 으로 통합 하여 새로운 필드 로 표시 합 니 다.구체 적 인 실현 은 코드 를 보십시오
 
#region , QuestionId,ChapterId,QuestionTypeId,Point,
/// <summary>
/// , QuestionId,ChapterId,QuestionTypeId,Point,
/// Degree,Fraction,QuestioinContent,IsValid ,
/// </summary>
/// <param name="strDataTableName"></param>
/// <returns></returns>
public DataTable BindQuestion(string strTableName,string strChapterName,string strQuestionTypeName)
{
try
{
DataTable dt = new DataTable ();
if (strQuestionTypeName != " " && strQuestionTypeName != " ")
{
strsql = "select * from " + strTableName + " where ChapterId=@chapterid and QuestionTypeId=@questiontypeid";
}
else
{
strsql = "select QuestionId,ChapterId,QuestionTypeId,Point,Degree,Fraction,QuestionContent,cast(Answer1 as nvarchar(4000)) + cast(Answer2 as nvarchar(4000)) + cast(Answer3 as nvarchar(4000)) + cast(Answer4 as nvarchar(4000)) + cast(Answer5 as nvarchar(4000)) + cast(Answer6 as nvarchar(4000)) AS CorrectAnswer,IsValid from " + strTableName + " where ChapterId=@chapterid and QuestionTypeId=@questiontypeid";
}
//strsql = "select * from " + strTableName + " where ChapterId=@chapterid and QuestionTypeId=@questiontypeid";
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@chapterid",strChapterName),
new SqlParameter("@questiontypeid",strQuestionTypeName)
};
dt = sqlHelper.ExecuteQuery(strsql,paras,CommandType.Text);
return dt;
}
catch
{
throw new Exception(" QuestionId,ChapterId,QuestionTypeId,Point ( )");
}
finally
{
sqlHelper.Close();
}
}
#endregion
그 중에서 캐 스 트 함 수 를 사용 하 는 strSql 문장 이 하 는 역할 은 여러 필드 를 하나의 새로운 필드 로 통합 하 는 것 입 니 다.또한 주의해 야 할 것 은 strSql 문장의'+'번호 입 니 다.합 쳐 야 할 필드 의 내용 이 Text 형식 이 라면 이 기 호 를 지원 하지 않 습 니 다.이 때 nvarchar 형식 으로 변환 해 야 합 니 다.이 다 열 합병 문 제 는 완벽 하 게 해결 되 었 다.

좋은 웹페이지 즐겨찾기