c# - asp.net:如何通过特定行中的复选框更新 GridView 中的数据
问题描述
我正在开发一个 Web 表单,在其中显示带有数据的 Gridview。其中一列由 CheckBox 组成。如何更新特定行中的数据。
所以我的问题是:
当用户选中或取消选中复选框时,如何识别特定行并使用 UPDATE 发送 sql 请求?
更新:这是我的代码。它不会更新 CheckBox 的值。命名空间:
public partial class Call_Bills : System.Web.UI.Page
{
SqlConnection con = new SqlConnection();
string check;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button_Submit(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView2.Rows)
{
con.ConnectionString = ConfigurationManager.ConnectionStrings["TestDeductionsConnectionString2"].ToString();
con.Open();
bool private1 = (row.FindControl("CheckBox1") as CheckBox).Checked;
if (private1 == true)
{
check = "1";
}
else
{
check = "0";
}
SqlCommand cmd = new SqlCommand("insert into DetailCosts(private) values(@private)", con);
cmd.Parameters.AddWithValue("@private", check);
cmd.ExecuteNonQuery();
}}
GridView 的名称是:GridView2;表中复选框的名称:私有;Gridview 中 CheckBox 的 id 为:
<asp:TemplateField HeaderText="Private" SortExpression="private">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Eval("private") %>' />
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center" />
</asp:TemplateField>
解决方案
您可以手动定义一种方法来处理由 gridview 列内的控件生成的回发。为此,您只需添加标签AutoPostBack=True
和OnCheckedChanged=YourMethodName
控件。
在代码隐藏中,将此方法定义为 public void,并定义通常存在的参数(sender 作为对象,e 作为 EventArgs),例如:
public void YourMethodName(object sender, EventArgs e)
在该方法上,您可能需要获取包含已生成事件的控件的 GridViewRow。为此,只需解析 sender 参数(将是复选框)并获取 2 个父级别(GridViewCell 和 GridViewRow),它将类似于:
GridViewRow row = ((CheckBox)sender).parent.parent;
由于您拥有该行,因此您可以使用 FindControl 方法获得其中的任何控件。如果您需要一个 id 来标识正在更新的实体,您可以将其存储在行内的隐藏字段中。
希望能帮助到你!
推荐阅读
- excel - Excel VBA:删除文件夹中的任何空 Excel 文件
- node.js - 贝宝窗口不显示多个项目
- javascript - 如何在 JS 中创建元素 HTML 并在聊天的消息框顶部对齐名称
- python - Python 现有连接被远程主机强行关闭 Pandas 读取 SQL 和 to sql 函数不同的数据库
- machine-learning - 使用 NLP 查找自定义实体
- python - 无法为 Python 3.8.5 VirtualEnv 导入 MySql.Connector
- javascript - 使用凭据 JS 获取
- scala - 如何通过 Scala Spark 中的元素之一对元组数据集进行分组?
- laravel - 照片不显示在购物车 LARAVEL 6
- python - 使用 pygame 显示文本