即使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; } ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何实现像WCF一样的Asp.net MVC OneWay / FireAndForget调
- ASP.NET MVC查看用户控件 – 如何设置ID?
- asp.net-mvc – NHibernate和上下文实体
- ASP.net控件在实现资源时在代码背后找不到
- asp.net-mvc-3 – ASP.NET MVC 3将无法识别.cshtml视图文件
- asp.net-mvc – 找到相同类型的两个实体之间的差异
- asp.net – 在中等信任下,在GMail SMTP上发送电子邮件
- asp.net-mvc – jQuery.POST – 使用Form.Serialize()传递另
- asp.net-web-api – ASP.net 5中的IApplicationBuilder.Use
- asp.net – 如果启用ASP .Net请求验证,是否需要HtmlEncode