2012-02-21 2 views
2

SQL 쿼리에서 데이터를 가져 오는 편집 가능한 데이터 격자가 있습니다. 필드 중 하나에 Y 또는 N 응답이 있으므로 편집 모드에서 필드 및 필드로 표시해야합니다. 내가C# ASP.NET DataGrid 확인란

<asp:CheckBox ID="ALFSUPR" runat="server" Checked='<%# Bind("pric_c_alfsupreq") %>'></asp:CheckBox> 

에 넣고 경우 오류 값 =을 Y

감사가 검사 CheckBox의 텍스트 필드를 변환하는 간단한 방법이

+0

로 전화를? DataGrid 또는 DataGridView? –

+0

DataGrid 나는 –

답변

2

시도 뭔가 :

Checked='<%# Eval("pric_c_alfsupreq").ToString().Equals("Y") %>'> 

가 UPDATE : 당신이 오래된 데이터 그리드을 사용하고 있기 때문에

(당신이 요즘 DataGridView를를 사용한다), 비슷한 무언가를해야한다 DataGrid 정의 :

<asp:DataGrid ID="Grid" runat="server" PageSize="5" AllowPaging="True" 
       DataKeyField="EmpId" AutoGenerateColumns="False" CellPadding="4" 
       ForeColor="#333333" GridLines="No" 
       OnPageIndexChanged="Grid_PageIndexChanged" 
       OnCancelCommand="Grid_CancelCommand" 
       OnDeleteCommand="Grid_DeleteCommand" 
       OnEditCommand="Grid_EditCommand" 
       OnUpdateCommand="Grid_UpdateCommand"> 
protected void Grid_UpdateCommand(object source, DataGridCommandEventArgs e) 
{ 
    con = new SqlConnection(ConfigurationManager.AppSettings["connect"]); 

    char value = "N" 

    // You'll have to change the index here to point to the CheckBox you have in 
    // your DataGrid. 
    // It can be on index 1 Controls[1] or 2 Controls[2]. Only you know this info. 
    if(((CheckBox)e.Item.Cells[0].Controls[0]).Checked == true) 
    { 
     value = "Y";; 
    } 

    cmd.Parameters.Add("@pric_c_alfsupreq", SqlDbType.Char).Value = value; 

    cmd.CommandText = "Update command HERE"; 

    cmd.Connection = con; 

    cmd.Connection.Open(); 

    cmd.ExecuteNonQuery(); 

    cmd.Connection.Close(); 

    Grid.EditItemIndex = -1; 
} 

당신이 아이디어를 얻을 희망 :

은 행의 데이터에 업데이트를 적용 할 때 실행해야 OnUpdateCommand ...

이제 방법을 참조하십시오. 다른 순간에이 코드가 필요하면 OnEditCommand, OnDeleteCommand 등의 코드에 넣을 수 있습니다.

+0

이게 작동합니다 그것은 체크 박스를 폼에 넣고 멋지게 만듭니다. 그러나 업데이트 할 때 값을 설정하지 않지만 오류가 발생하지 않습니다. –

+0

@JustinErswell : 이것을 확인하십시오 : http://stackoverflow.com/q/1340901/114029 –

+0

나는이 사실을 이해하기 위해 고심하고 있습니다. 내가 확인할 때 데이터베이스의 필드에 Y 또는 N을 써야한다고 설명 할 수 있습니까? 상자 또는 –

2

정말 내 웹폼을 기억 할 수 없습니다 일 수는 있지만 가능하면 변경할 수 있습니다.

Checked='<%# Bind("pric_c_alfsupreq") %>'> 

Checked='<%# Eval("pric_c_alfsupreq") == "Y" %>'> 

업데이트

에, 나는 당신이 "예"또는 "아니오", 다음 Checked 속성을 추출의 GridView.RowUpdating 이벤트를 처리 할 수있는 변환 것 같아요. 이 같은

2

코드에 Simon의 답변보다 더 많은 논리가 필요하면 코드 뒤에 보호 된 메서드를 만들 수도 있습니다 전화 해.

protected bool GetCheckboxValue(String value) 
{ 
    //put your logic here 
    return value.ToLower() == "y"; 
} 

한 다음 .aspx 페이지에서 사용하는 컨트롤의 어떤 종류의

Checked='<%# GetCheckboxValue("pric_c_alfsupreq") %>'>