2011-03-03 2 views
2

문제 : 목록 항목을 추가 할 때 값 필드가 텍스트 필드로 설정됩니다. 처음에는 문제가 OUTPUT 변수로 구성되었으므로 기본 키 (group_type_id)에 대한 입력 매개 변수와 관련되었지만ListBox - 텍스트 필드로 설정되는 값

충분히 흥미 롭습니다. 모든 값을 볼 때 모든 것이 정확합니다. 그래서 예를 들어, 나는이를 볼 수 있습니다 :

항목 그러나 생성
ddr["group_type_name"] comes out as "Dept" 
ddr["grouptypeid"] comes out as 4 

,

itms.TEXT = "Dept" 
itms.Value = "Dept" <-- THIS IS THE PROBLEM 

내가 목록 상자 값이 텍스트 값 때 설정되는 이유 손실에 있어요 데이터 판독기 값이 올바른지 분명히 알 수 있습니다. ? 여기

코드 샘플 :

DbDataReader ddr = grp.GetGroupTypeList(grp); 
if (ddr.HasRows) 
{ 
    ListItem itm = new ListItem(); 
    itm.Text = "Select Group"; 
    itm.Value = "0"; 
    lb.Items.Add(itm); 
    while (ddr.Read()) 
    { 
     ListItem itms = new ListItem(ddr["group_type_name"] as string, ddr["grouptypeid"] as string); 
    } 
    lb.SelectedValue = lbSelected;    
} 

절차 : 그것은 거의 확실하게 문제의 원인이되는 as string

ALTER PROCEDURE [dbo].[asp_Group_Type] 
@driver    char(1)='I', 
@group_type_id  int=null OUTPUT, 
@group_type_name varchar(50)=null, 
@par_group_id  int=null, 
@active    bit 
AS 
DECLARE @SQL varchar(8000) 
DECLARE @boolWhere varchar(10) 
SET @boolWhere = ' WHERE ' 

SET NOCOUNT ON 

IF (@driver = 'I') 
    BEGIN 
     INSERT INTO [dbo].[group_type] 
     ([group_type_name], 
     [Par_Group_Id]) 
    VALUES 
     (RTRIM(LTRIM(@group_type_name)), 
     @par_group_id) 

     SELECT @group_type_id = SCOPE_IDENTITY() 
    END 

IF (@driver = 'U') 
    BEGIN 
     UPDATE [dbo].[group_type] 
      SET [group_type_name] = RTRIM(LTRIM(@group_type_name)) 
       ,[Par_Group_Id] = @par_group_id 
     WHERE [group_type_id] = @group_type_id 
    END 

IF (@driver = 'S') 
    BEGIN 


     SET @SQL = ' SELECT [group_type_id] AS [grouptypeid], [group_type_id], [group_type_name],[Par_Group_Id] FROM [dbo].[group_type] ' 

     IF (@group_type_id > 0) 
      BEGIN 
       SET @SQL = @SQL + @boolWhere + '[group_type_id] = ''' + CAST(@group_type_id AS VARCHAR) + '''' 
       SET @boolWhere = ' AND ' 
      END 

     IF (@active > 0) 
      BEGIN 
     SET @SQL = @SQL + @boolWhere + ' [active] = ''' + CAST(@active AS VARCHAR) + '''' 
      END 

     SET @SQL = @SQL + ' ORDER BY [group_type_name] ' 
     PRINT(@SQL) 
     EXEC(@SQL) 
    END 

답변

0

. "as"는 변환을 수행 할 수없는 경우 기본값이 null입니다. 값이 유효한 문자열이 아닌 경우 ListItem은 값을 텍스트와 동일하게 설정합니다. 대신 ddr["grouptypeid"].ToString()을 사용하십시오.

+0

그게 효과가 있었어! 감사. – ericm

+0

그런 다음 내 대답을 귀하의 질문에 답변 한 것으로 표시하십시오. –

관련 문제