ページの読み込み時にGridviewから情報をStringのリストに保存しようとしています。私はその情報を取ってそれをメールで送りたいと思っています。私はこれに関する情報をオンラインで見てきましたが、今までは何も見つかりませんでした。 ViewStateの実装が間違っているか間違っているかどうかはわかりません。助けてください?ViewStateで文字列のリスト
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["messages"] != null)
{
messages = (List<string>)ViewState["messages"];
}
if (Page.IsPostBack)
{
changeByVendor();
//mailFunction(messages);
}
if (!IsPostBack)
{
mailFunction(messages);
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((GridView1.DataSourceID == "SqlDataSource2" || GridView1.DataSourceID == "SqlDataSource1") && !(e.Row.Cells[11].Text.Equals(" ")))
{
DateTime myDate = Convert.ToDateTime(e.Row.Cells[11].Text);
if (DateTime.Now > myDate)
{
e.Row.ForeColor = System.Drawing.Color.Red;
}
DateTime myDate2 = Convert.ToDateTime(e.Row.Cells[13].Text);
if (myDate2 > DateTime.Now && myDate2 < DateTime.Now.AddDays(28))
{
e.Row.Cells[13].BackColor = System.Drawing.Color.Yellow;
string thisRow = "";
for (int i = 0; i < e.Row.Cells.Count; i++)
{
thisRow = thisRow + e.Row.Cells[i];
}
messages.Add(thisRow);
}
}
else if (GridView1.DataSourceID == "SqlDataSource4" && !(e.Row.Cells[6].Text.Equals(" ")))
{
DateTime myDate = Convert.ToDateTime(e.Row.Cells[6].Text);
if (DateTime.Now > myDate)
{
e.Row.ForeColor = System.Drawing.Color.Red;
}
DateTime myDate2 = Convert.ToDateTime(e.Row.Cells[7].Text);
if (myDate2 > DateTime.Now && myDate2 < DateTime.Now.AddDays(28))
{
e.Row.Cells[7].BackColor = System.Drawing.Color.Yellow;
}
}
ViewState["messages"] = messages;
}
}
複数の情報がありますか。あなたはそれをリダイレクトしていますか?あなたは何をしているのか詳しく説明できますか? –
OnDataBoundイベント 'if((GridView1.DataSourceID ==" SqlDataSource2 "|| GridView1.DataSourceID ==" SqlDataSource1 ")'でOnDataBoundイベントをチェックしているのですが、それを再バインドしないか、そうでない場合nullの場合、コードをステップ実行するときに 'message'の値は何である必要はありませんか? – MethodMan
[Asp.net ViewStateの理解](https://msdn.microsoft.com/en-us/library/ms972976) aspx) – MethodMan