2012-02-21 47 views
2

我有一個可編輯數據網格,其從SQL查詢字段中的一個具有Y或N應答,因此需要是但是在編輯模式下一個複選框它顯示作爲場和拉數據如果我把這個C#ASP.NET數據網格複選框

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

錯誤有文本字段轉換將通過在經過具有值= Y

感謝CheckBox的一個簡單的方法

+0

叫什麼你正在使用在.aspx頁面什麼樣的控制? DataGrid或DataGridView? – 2012-02-21 21:34:33

+0

的DataGrid我相信 – 2012-02-22 01:39:45

回答

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

這個工作它把一個複選框到窗體和那巨大的,但是當我更新它不設置值,但它並沒有任何錯誤任何想法? – 2012-02-21 16:45:27

+0

@JustinErswell:檢查:http://stackoverflow.com/q/1340901/114029 – 2012-02-21 16:53:07

+0

我努力理解這一點,你可以進一步解釋我需要寫一個Y或N進入該領域的數據庫,當我當我檢查該框是否爲 – 2012-02-21 17:10:40

2

真的不記得我的WebForms天,但可能會更改

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

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

當您更新,我認爲你必須處理GridView.RowUpdating事件,然後提取Checked屬性,將其轉換爲「是」或「否」。

2

如果你的代碼需要多一點的邏輯比西門的回答,您還可以創建一個受保護的方法在後面的代碼並稱之爲。

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

,然後用

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