ここには私が書いたコードがあります。私が持っている問題は: グリッドビューの "rowcommand"ボタンをクリックすると、うまく動作するarraylistに項目が追加されます。 ユーザーがボタンをクリックすると、ページが再び読み込まれ、「行コマンド」に戻ります。結果として同じ値がarraylistに追加されます。pageload in c#
これはポストバックに関するものですか?それは私がそれを十分に理解しているとは思わない!ここで何が間違っているようですか?
//編集2:全体のコードブロック
public partial class Action_k : System.Web.UI.Page
{
ArrayList array;
ArrayList tmpArrayList = new ArrayList();
string itemIDs = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == false)
{
if (Session["username"] == null)
{
Session["anonuser"] = "anon";
Label1.Text = "";
userLabel.Text = "";
ImageButton1.ImageUrl = "~/images/logink.gif";
ImageButton1.PostBackUrl = "~/Login_k.aspx";
}
else
{
userLabel.Text = Session["username"].ToString();
Label1.Text = "Your logged in as: ";
ImageButton1.ImageUrl = "~/images/logoutk.gif";
}
if (Session["array"] == null)
{
array = new ArrayList();
Session.Add("array", array);
}
}
array = Session["array"] as ArrayList;
}
public void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "AddToCart")
{
int index = Convert.ToInt32(e.CommandArgument);
string items = GridView2.DataKeys[index].Value.ToString();
array.Add(items);
Response.Redirect("ShoppingCart_k.aspx?itemID=" + items);
}
}
}
おかげで、
古典的な悪いwebformsコードで、そのコードには多くの失敗があります。セッションやWebフォームの代わりにパラメータを渡すことの代替案を検討することをお勧めします –