如何根据条件检查GridView中的CheckBox?

时间:2011-01-11 09:26:24

标签: c# asp.net user-controls

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

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

输入所有文本框字段后,我必须在radiobuttonlist中选择一个listitem(FixedLength或RandomLength)。完成这些事情后。如果我进入“提交”按钮,则文本框中的所有值将显示在GridView的相应列名称和复选框下,如果选择了FixedLength列表项,则要检查该复选框,否则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;
        }

3 个答案:

答案 0 :(得分:0)

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

类似的东西:

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;
  }
}

答案 1 :(得分:0)

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

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

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

将IsFixed_f值绑定到特定复选框(在新的gridviewrow中)而不将其存储在某处(dataset / table?!) - 似乎对我不可能......

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

答案 2 :(得分:0)

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

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

感谢大家的回复。