【发布时间】:2014-03-02 22:49:51
【问题描述】:
我有一个 gridview ,在 gridview 的一列中我有 2 个具有不同 ID 的复选框 所以我在单击按钮(更新按钮)后执行 foreach 循环以循环行并检查是否选中了该特定行的复选框,然后我想在单击按钮后一起更新所有行
我在 Page_Load() 中填充了 gridview,foreach 循环根据行数进入正确的循环数,但它不会进入我的 If 语句以检查复选框是否被选中
这是我的代码:
protected void btnUpdate_Click(object sender, EventArgs e)
{
int count = 0;
foreach (GridViewRow row in GridView1.Rows)
{
count++;
if (((CheckBox)row.FindControl("showBbtn")).Checked & ((CheckBox)row.FindControl("showCbtn")).Checked) // if 2 buttons are checked show error popout
{
Response.Write(@"<script language='javascript'>alert('You can only select Yes or No')</script>");
}
else
{
if (((CheckBox)row.FindControl("showCbtn")).Checked) // Won't enter
{
//Do something here.
}
if (((CheckBox)row.FindControl("showBbtn")).Checked) // Won't enter
{
// Do something here.
}
}
}
Response.Write(count);
}
这就是我填充网格视图的方式:
protected void Page_Load(object sender, EventArgs e)
{
BindQuestion(); // Foreach loop count is according to the number of rows
if (!Page.IsPostBack)
{
// BindQuestion(); // Can enter the if loop but the foreach loop count is only 1.
}
}
我的aspx:
<asp:TemplateField HeaderText="Display">
<ItemTemplate>
<asp:CheckBox ID="showCbtn" runat="server" Text = "Yes" />
<br />
<asp:CheckBox ID="showBbtn" runat="server" Text = "No" />
</ItemTemplate>
</asp:TemplateField>
【问题讨论】:
-
我认为你应该只使用一个复选框。如果选中则更新行,否则不更新。
-
我使用了 2 个复选框,因为我想让他们选择 Yes 或 No,然后我会将 Yes 或 No 更新到该特定记录的数据库中,现在的问题是,它不会输入 if声明,我想更新整个gridview
-
如果您希望最终用户显示是和否选项,并且用户应该能够选择其中任何一个,那么您可以使用单选按钮。
-
问题是每次只更新一行,而不是点击更新按钮后每一行都更新
-
表示如果选中任何复选框,则基于该选中值您需要更新整个 GridView 记录?
标签: c# asp.net gridview checkbox foreach