2012-02-21 45 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") %>'>