Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当前上下文中不存在名称“chk”_C#_Asp.net_Webforms - Fatal编程技术网

C# 当前上下文中不存在名称“chk”

C# 当前上下文中不存在名称“chk”,c#,asp.net,webforms,C#,Asp.net,Webforms,我是c和asp.net新手,我正在尝试制作一个webform,用于管理项目集合。 我已经为添加/搜索/编辑创建了表单,但我在删除方面遇到了一些问题。 我的错误是: -错误CS0103当前上下文try.aspx.cs行中不存在名称“chk”:74 -错误CS0119“CheckBox”是一种类型,在给定的contexttry.aspx.cs行中无效:74 我见过几个问题都有同样的错误,但我还是不知道我的错误在哪里 try.aspx: try.aspx.cs: 这是74号线吗 if (CheckBo

我是c和asp.net新手,我正在尝试制作一个webform,用于管理项目集合。 我已经为添加/搜索/编辑创建了表单,但我在删除方面遇到了一些问题。 我的错误是: -错误CS0103当前上下文try.aspx.cs行中不存在名称“chk”:74 -错误CS0119“CheckBox”是一种类型,在给定的contexttry.aspx.cs行中无效:74

我见过几个问题都有同样的错误,但我还是不知道我的错误在哪里

try.aspx:

try.aspx.cs:

这是74号线吗

if (CheckBox chk = (CheckBox)KeszletGrid.Rows[i].Cells[0].FindControl("chk"))
不能在同一行的条件下声明chk并使用它。试试这个:

CheckBox chk = KeszletGrid.Rows[i].Cells[0].FindControl("chk") as CheckBox
if (chk != null && chk.Checked) {
  // etc.
}

我希望这将有助于您:

for (i = 0; i < KeszletGrid.Rows.Count; i++)
    if (CheckBox chk = KeszletGrid.Rows[i].Cells[0].Controls[0] as CheckBox;
将GetData方法更新为以下内容

在for循环中没有使用代码块,并且在整个方法中也缺少一些代码块

if语句上的缩进仅在有一行代码而不是多行代码时有效。还有一个或两个紧闭的大括号不见了

private void GetData()
{
    int i;
    ArrayList arr;
    if (ViewState["SelectedRecords"] != null)
        arr = (ArrayList)ViewState["SelectedRecords"];
    else
        arr = new ArrayList();
    for (i = 0; i < KeszletGrid.Rows.Count; i++)
    {
        CheckBox chk = null;
        if ((chk = (CheckBox)KeszletGrid).Rows[i].Cells[0].FindControl("chk"))
        {
            if (chk.Checked)
            {
                if (!arr.Contains(KeszletGrid.DataKeys[i].Value))
                {
                    arr.Add(KeszletGrid.DataKeys[i].Value);
                }
            }
            else
            {
                if (arr.Contains(KeszletGrid.DataKeys[i].Value))
                {
                    arr.Remove(KeszletGrid.DataKeys[i].Value);
                }
            }
        }
    }
}

请尝试改用CheckBoxKeszletGrid.Rows[i].FindControlchk。这可能会对您有所帮助。该复选框位于TemplateField中,因此不在该行的单元格中。需要改用行的FindControl。但是if-there的奇怪用法很好。@user1429080您的原始代码正在行中的单元格中查找它,不是吗?我只是复制了你的行并删除了类型声明。我不是OP:-。我相信,你的建议是正确的,但并非完全达到目标。这就是我评论的原因。.哈哈,所以你不是:@colim我也许应该说declare而不是assign。主要错误仍然存在,没有对CheckBox或chk-ifCheckBox-chk=…@kritikaTalwar进行更改,请参见下面的Alan评论,你不能在if条件下声明变量,您只能分配现有变量。感谢您的帮助@kritikaTalwar它解决了我的问题!很高兴帮助你。
for (i = 0; i < KeszletGrid.Rows.Count; i++)
    if (CheckBox chk = KeszletGrid.Rows[i].Cells[0].Controls[0] as CheckBox;
foreach(GridViewRow row in KeszletGrid.Rows) {
   if(row.RowType == DataControlRowType.DataRow) {
    CheckBox chk = row.FindControl("chk ") as CheckBox ;
   }
}
private void GetData()
{
    int i;
    ArrayList arr;
    if (ViewState["SelectedRecords"] != null)
        arr = (ArrayList)ViewState["SelectedRecords"];
    else
        arr = new ArrayList();
    for (i = 0; i < KeszletGrid.Rows.Count; i++)
    {
        CheckBox chk = null;
        if ((chk = (CheckBox)KeszletGrid).Rows[i].Cells[0].FindControl("chk"))
        {
            if (chk.Checked)
            {
                if (!arr.Contains(KeszletGrid.DataKeys[i].Value))
                {
                    arr.Add(KeszletGrid.DataKeys[i].Value);
                }
            }
            else
            {
                if (arr.Contains(KeszletGrid.DataKeys[i].Value))
                {
                    arr.Remove(KeszletGrid.DataKeys[i].Value);
                }
            }
        }
    }
}