2012-02-21 8 views
2

私は編集可能なデータグリッドを持っていますが、SQLクエリからデータを引き出しています。フィールドの1つにYまたはNの答えがあるため、チェックボックスにする必要があります。私はC#ASP.NET DataGridチェックボックス

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

でこれを入れた場合、エラー値=をY

おかげで持ってチェックチェックボックスにテキストフィールドを変換する簡単な方法はあります

+0

でそれを呼び出しますか? DataGridまたはDataGridView? –

+0

DataGrid私は確信しています –

答えて

2

このような何かを試してみてください:

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

UPDATE:あなたは、古いDataGridの(あなたは、今日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"> 

今、あなたは、行のデータへの更新を適用しているときに実行するメソッドOnUpdateCommand ...

を参照してください:

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; 
} 

は、あなたのアイデアを得る願っています。他の瞬間にこのコードが必要な場合は、OnEditCommandOnDeleteCommandなどに配置することができます。

+0

これは、フォームにチェックボックスを入れて素晴らしいですが、私はそれを更新したときに値を設定しませんが、どちらのアイデアもエラーになりませんか? –

+0

@JustinErswell:これを確認してください:http://stackoverflow.com/q/1340901/114029 –

+0

私はこれを理解するのに苦労しています。私がチェックすると、データベースのフィールドにYまたはNを書く必要があります。ボックスかどうか –

2

本当に私のWebフォームを思い出すことができません日を変更する可能性があります。

あなたが更新すると

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

から

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

、私は、「はい」または「いいえ」に変換し、Checkedプロパティを抽出し、あなたがGridView.RowUpdatingイベントを処理する必要があると思います。

2

コードにSimonの答えよりもロジックが必要な場合は、コード内で保護されたメソッドを作成することもできますそれを呼び出す。その後、

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

し、.aspxページで使用しているコントロールのどのような

Checked='<%# GetCheckboxValue("pric_c_alfsupreq") %>'> 
関連する問題