【问题标题】:How to Check the CheckBox in a GridView based on Condition?如何根据条件检查 GridView 中的 CheckBox?
【发布时间】:2011-01-11 09:26:24
【问题描述】:

我是初学者。我有四个用于 ItemName、ItemDescription、Length 和 Quantity 的文本框字段。 一个单选按钮列表及其列表项是 FixedLength 和 Random Length。 一个名为 Submit 的按钮字段和一个 gridview。

在 GridView 中,我有 4 个绑定列和 1 个模板列,例如 ItemName、ItemDescription、Length、Quantity 和 IsFixed_f(标志字段)。我在 GridView 的 Template 列中为 IsFixed_f 字段添加了一个复选框。

输入所有文本框字段后,我必须在单选按钮列表中选择一个列表项(FixedLength 或 RandomLength)。完成这些事情后。如果我输入提交按钮,文本框中的所有值都将显示在 GridView 的相应列名下,​​如果选择了 FixedLength listitem,则检查复选框,否则 checkbox.checked 应该为 false。如何做到这一点?

在Button Click事件中,我是这样使用的

        DataRow DR = null;
        DR = datatable.NewRow();
        DR["ItemName"] = DSItemName.Text.Trim();
        DR["Description"] = txtItemDescription.Text.Trim();
        DR["Length"] = txtLength.Text.Trim();
        DR["Quantity"] = txtQuantity.Text.Trim();
        datatable.Rows.Add(DR);
        GridView.DataSource = datatable;
        GridView.DataBind();

但我不知道如何检查 CheckBox 并将其显示在 GridView 中。请提出建议。 如果我使用以下代码,它会在 GridView 中使用 CheckBox 显示文本“true”。

        foreach (GridViewRow GVR in gridview.Rows)
        {
            CheckBox cb = (CheckBox)GVR.FindControl("cbIsFixed_f");

            if (cb != null && radiobuttonlist.SelectedItem.Value == "Fixed Length")
            {
                cb.Checked = true;
            }
            else
            {
                cb.Checked = false;
            }
            DR["IsFixed_f"] = cb.Checked;
        }

【问题讨论】:

  • 我们也可以从 .aspx 文件中查看您的代码吗?
  • @Jakob。感谢您的回复。我得到了答案,我在下面发布了。

标签: c# asp.net user-controls


【解决方案1】:

您可以为 gridview 的 OnRowDataBound 事件编写事件处理程序。在这种情况下,您需要找到复选框列并将其设置为选中或取消选中。

类似这样的:

protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
  CheckBox c = e.Row.Cells[4].FindControl("YourCheckboxId");
  if(c != null && e.Row.DataItem["sFixed_f"] == true)
  {
    c.Checked = true;
  }
}

【讨论】:

  • 嗨,我已经编辑了我的问题。我希望它能对我的问题给出一些清晰的认识。
【解决方案2】:

我不太确定如何从数据集中获取一行 - 我假设您的意思是 dataTable.newRow()。此外,我希望您的 tableSchema 包含您的 IsFixed_f 值的列。

如果您的 tableSchema 有一个额外的列用于 IsFixed_f 值,您可以使用 checkBoxField 绑定这些值。

正如您提到的模板字段,我假设您的表没有 IsFixed_f 的任何定义?在这种情况下,您可以手动将此列添加到您的架构中。

将您的 IsFixed_f 值绑定到特定复选框(在新的 gridviewrow 中)而不将其存储在某处(数据集/表?!) - 对我来说似乎不可能......

希望这可能会有所帮助 - 如果没有,请详细描述您的问题!

【讨论】:

  • @Franz。是的,它是一个数据表。我没有将这些字段存储在数据库中。我只想使用 GridView 显示它。但是使用上面的代码,我可以在 GridView 中显示文本框的值。
  • 嗨。我已经编辑了我的问题。我认为它可以让我清楚地了解我的问题。
  • 感谢您编辑您的答案 - 还有一个问题。 gridView 中的每一行都有自己的 IsFixed_f 值?如果这是正确的-您需要将 IsFixed_f 值存储在某处..您何时运行示例代码(foreach ....)- PageLoad?按钮点击?提交_点击?此示例代码指的是每一行的单选按钮列表(不在 gridview 中)!所以每一行对你的复选框都有相同的值吗?我仍然认为您需要为每一行存储 IsFixed_f 值!
  • 嗨弗朗茨,感谢您的支持。我得到了答案。我在上面发布。
  • 不客气-无论如何-尝试: DR["IsFixed_f"] = (radiobuttonlist.SelectedItem.Value == "Fixed Length"); // 这也可以:D
【解决方案3】:

我得到了这个问题的答案。

 DR["IsFixed_f"] = radiobuttonlist.SelectedItem.Value == "Fixed Length" ?true : false;

感谢大家的回复。

【讨论】:

  • 不要忘记将您的问题标记为未回答(或评价一些答案gg)
猜你喜欢
  • 2014-06-06
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-12
  • 2014-02-20
  • 1970-01-01
相关资源
最近更新 更多