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