グリッドビューの保存/更新/削除で配列エラーの範囲外のインデックス
こんにちは...、
私は GridView を使用して都市の詳細を保存/更新/削除しています。
詳細を保存/更新/削除しようとすると、「インデックスが配列の境界外でした」というエラーがスローされます。公開されたコードを持つサーバーでのみ。
私のローカルマシンでは、完全に機能しています。そこで、ローカル マシンの接続文字列をサーバーに変更し、ローカルで実行しました。これもうまくいきます。
次に、(Columns、Keys、Constraints、Triggers、Indexes、および Statistics ) を使用して、テーブル city の DB アーキテクチャを確認しました。すべて同じです。
GridView RowCommand のコードは次のとおりです。
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;
この問題を解決するのを手伝ってください....
よろしくお願い
します...