即使ReadOnly设置为false,ASP.NET GridView中的CheckBoxField列也被禁用
|
我有一个GridView有两个CheckBoxField列。他们都将ReadOnly属性设置为false,但为其生成的html代码具有disabled =“disabled”属性。所以值不能改变。 生成的HTML示例: <span disabled="disabled"><input id="ctl00_ContentBody_GridView_ctl02_ctl01" type="checkbox" name="ctl00$ContentBody$GridView$ctl02$ctl01" checked="checked" disabled="disabled" /></span> 有人会说出怎么弄清楚吗? 解决方法这是设计;默认情况下,GridView中的行不可编辑。有两种方法可以解决这个问题: >添加编辑链接 < asp:TemplateField HeaderText =“Discontinued”> alt text http://philippursglove.com/stackoverflow/checkboxgridview3.png 此复选框将被启用,但您需要自己做这些工作以将任何更改反映回数据库。只要你可以获得一个数据库密钥,这是很简单的,因为你需要在某个时候运行一个UPDATE语句,并且你想在右边的一行运行它!这里有两种方法可以做到这一点: 在您的Gridview标签中,添加DataKeyNames =“MyDatabasePrimaryKey”。然后在您的CheckedChanged事件处理程序中,您需要找到您正在处理的行,并在DataKeys数组中查找。 protected void DiscontinuedCheckBox_CheckedChanged(object sender,EventArgs e)
{
CheckBox DiscontinuedCheckBox;
SqlConnection conn;
SqlCommand cmd;
int productId;
GridViewRow selectedRow;
// Cast the sender object to a CheckBox
DiscontinuedCheckBox = (CheckBox)sender;
// We can find the row we clicked the checkbox in by walking up the control tree
selectedRow = (GridViewRow)DiscontinuedCheckBox.Parent.Parent;
// GridViewRow has a DataItemIndex property which we can use to look up the DataKeys array
productId = (int)ProductGridView.DataKeys[selectedRow.DataItemIndex].Value;
using (conn = new SqlConnection(ProductDataSource.ConnectionString))
{
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
if (DiscontinuedCheckBox.Checked)
{
cmd.CommandText = "UPDATE Products SET Discontinued = 1 WHERE ProductId = " + ProductId.ToString();
}
else
{
cmd.CommandText = "UPDATE Products SET Discontinued = 0 WHERE ProductId = " + ProductId.ToString();
}
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
或者,您可以在HiddenField控件中添加密钥: < asp:TemplateField HeaderText =“Discontinued”> protected void DiscontinuedCheckBox_CheckedChanged(object sender,EventArgs e)
{
CheckBox DiscontinuedCheckBox;
HiddenField ProductIdHiddenField;
DiscontinuedCheckBox = (CheckBox)sender;
ProductIdHiddenField = (HiddenField)DiscontinuedCheckBox.Parent.FindControl("ProductIdHiddenField");
using (conn = new SqlConnection(ProductDataSource.ConnectionString))
{
...
if (DiscontinuedCheckBox.Checked)
{
cmd.CommandText = "UPDATE Products SET Discontinued = 1 WHERE ProductId = " + ProductIdHiddenField.Value;
}
...
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp-classic – 为经典Asp Session Cookie设置HTTPONLY
- asp.net-mvc – 使用jQuery $.ajax()和$.post()发送字符串数
- asp.net-web-api – AttributeRouting不能与HttpConfigurat
- 如何比较vbscript / ASP中的两个日期?
- asp.net-mvc – 域vs DTO vs ViewModel – 如何和何时使用它
- asp.net – 我可以在Visual Studio 2008中使用MVC3吗?
- asp.net – 是否有一个简单的方法来呈现具有Microsoft Web
- asp.net – 在Web部署之外应用Web.Config转换
- 我可以在asp.net 4.0站点中托管.net 2.0虚拟目录吗?
- asp.net – 想要在ModalPopExtender之上显示Update Progres
- asp.net-mvc – Mvc验证正则表达式只有数字?
- asp-classic – 从头开始在Visual Studio 2010中
- asp.net-mvc – 在EditorTemplate中渲染字段名称
- asp.net-core – 你如何解决AspNet Core缺少的依
- asp.net-mvc – 获取当前用户的角色
- asp.net – 从URLReferrer获取querystring
- asp.net-mvc – 使用asp.net mvc 2功能与火花浏览
- 将TagHelpers嵌套在ASP.NET Core MVC 6中
- asp.net-mvc – 如何在MVC Unobtrusive Validati
- 在ASP.NET/IIS的URL中使用冒号(:)
