C#ASP.NET DataGrid复选框

时间:2012-02-21 16:32:57

标签: c# asp.net datagrid checkbox bind

我有一个可编辑数据网格,它从SQL查询中提取数据,其中一个字段有一个Y或N答案,因此需要是一个复选框,但是在编辑模式下它显示为一个字段,如果我把它放在

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

是否有一种简单的方法将文本字段转换为CheckBox,当Checked具有值= Y时

由于

3 个答案:

答案 0 :(得分:2)

无法真正记住我的WebForms时代,但可能会更改

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

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

更新时,我认为您必须处理GridView.RowUpdating事件,然后提取Checked属性,将其转换为“是”或“否”。

答案 1 :(得分:2)

尝试这样的事情:

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

<强>更新

由于您使用的是旧的 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等...

答案 2 :(得分:2)

如果你的代码需要比Simon的答案更多的逻辑,你也可以在你的代码中创建一个受保护的方法并调用它。

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

然后用

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