我有一个可编辑数据网格,它从SQL查询中提取数据,其中一个字段有一个Y或N答案,因此需要是一个复选框,但是在编辑模式下它显示为一个字段,如果我把它放在
<asp:CheckBox ID="ALFSUPR" runat="server" Checked='<%# Bind("pric_c_alfsupreq") %>'></asp:CheckBox>
是否有一种简单的方法将文本字段转换为CheckBox,当Checked具有值= Y时
由于
答案 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;
}
希望你能得到这个想法。如果您在任何其他时刻需要此代码,可以将其放入OnEditCommand
,OnDeleteCommand
等...
答案 2 :(得分:2)
如果你的代码需要比Simon的答案更多的逻辑,你也可以在你的代码中创建一个受保护的方法并调用它。
protected bool GetCheckboxValue(String value)
{
//put your logic here
return value.ToLower() == "y";
}
然后用
调用它Checked='<%# GetCheckboxValue("pric_c_alfsupreq") %>'>