C# 索引超出gridview保存/更新/删除时的数组错误界限 索引超出gridview保存/更新/删除时数组错误的界限
嗨…,C# 索引超出gridview保存/更新/删除时的数组错误界限 索引超出gridview保存/更新/删除时数组错误的界限,c#,C#,嗨…, 我正在使用GridView保存/更新/删除城市详细信息。 当我试图保存/更新/删除详细信息时,它将抛出一个错误“索引超出了数组的界限”。仅在具有已发布代码的服务器中。 在我本地的机器上,它工作得很好。因此,我将本地计算机的连接字符串更改为server,并在本地计算机中运行它。这也很好。 然后,我用(列、键、约束、触发器、索引和统计信息)检查了表city的DB架构。都是一样的。 GridView行命令的代码如下: City city = null; if (new[] { Comman
我正在使用GridView保存/更新/删除城市详细信息。
当我试图保存/更新/删除详细信息时,它将抛出一个错误“索引超出了数组的界限”。仅在具有已发布代码的服务器中。
在我本地的机器上,它工作得很好。因此,我将本地计算机的连接字符串更改为server,并在本地计算机中运行它。这也很好。
然后,我用(列、键、约束、触发器、索引和统计信息)检查了表city的DB架构。都是一样的。
GridView行命令的代码如下:
City city = null;
if (new[] { CommandName.DeleteRow.GetTextName(), CommandName.UpdateRow.GetName() }.Contains(e.CommandName))
city = City.GetCityById(int.Parse(e.CommandArgument.ToString()));
if (e.CommandName == CommandName.StartInsert.GetTextName())
{
gvCities.FooterRow.Visible = true;
return;
}
if (e.CommandName == CommandName.InsertFirst.GetTextName())
{
var button = (Button)e.CommandSource;
if (button == null)
throw new Exception("Control not found");
var txtName = button.NamingContainer.NamingContainer.FindControl("txtName") as TextBox;
var ddlEmptyAddState = button.NamingContainer.NamingContainer.FindControl("ddlEmptyAddState") as DropDownList;
if (txtName == null)
throw new Exception("Control not found");
city = new City{ Name = txtName.Text.Trim(), StateId = Convert.ToInt32(ddlEmptyAddState.SelectedValue) };
city.InsertCity();
}
else if (e.CommandName == CommandName.Insert.GetTextName())
{
var row = gvCities.FooterRow;
DropDownList ddlAddState = (DropDownList)row.FindControl("ddlAddState");
city = new City
{
Name = ((TextBox) row.FindControl("txtName")).Text.Trim(),
StateId = Convert.ToInt32(ddlAddState.SelectedValue),
IsDefault = ((CheckBox) row.FindControl("cbDefault")).Checked
};
city.InsertCity();
}
else if (e.CommandName == CommandName.DeleteRow.GetTextName())
{
city.DeleteCity();
}
else if (e.CommandName == CommandName.UpdateRow.GetName())
{
var row = gvCities.Rows[gvCities.EditIndex];
DropDownList ddlEditState = (DropDownList)row.FindControl("ddlEditState");
if (row == null)
throw new Exception("Edit row not found");
city.Name = ((TextBox) row.FindControl("txtName")).Text.Trim();
city.StateId = Convert.ToInt32(ddlEditState.SelectedValue);
city.IsDefault = ((CheckBox)row.FindControl("cbDefault")).Checked;
city.UpdateCity();
}
gvCities.DataBind();
if (e.CommandName != CommandName.Edit.GetTextName() && gvCities.EditIndex >= 0)
gvCities.EditIndex = -1;
请帮我解决这个问题……提前感谢…
关于
@Jayasankar,请在方法中放置一个断点,并告诉我们它失败的代码行,我认为它失败的代码行是var row=gvCities.Rows[gvCities.EditIndex];谢谢你的回复。。。但这一错误并不是在本地机器上造成的。。它发生在具有已发布代码的服务器上。。