0

Default.aspx.cs の自動更新コード:

protected void Page_Load(object sender, EventArgs e)
{
    // Auto refresh every 5 second
    Response.AppendHeader("Refresh",5+"; URL=Default.aspx");

    // Auto update into database
    con = new MySqlConnection(conStr);
    con.Open();

    cmd = new MySql.Data.MySqlClient.MySqlCommand();
    cmd.Connection = con;
    con = new MySql.Data.MySqlClient.MySqlConnection(conStr);

    GridView1.DataSourceID = "Datacmd";

    // Get status of process on server of pid(cells[6])
    count = GridView1.Rows.Count;
    string server = "";
    string pid = "";
    string status = "";
    string cout = GridView1.Rows.count;

    for (int i = 0; i < count; i++)
    {
        server = GridView1.Rows[i].Cells[1].Text;

        switch (server)
        {
            // If server locahost
            case "localhost":
                pid = GridView1.Rows[i].Cells[6].Text;
                status = ws.GetStatusProcess(pid);   //Ws is My webservice have a function GetStatusProcess(string pid)
                string SQL = "UPDATE command SET status='" + status + "' WHERE id=" + int.Parse(GridView1.Rows[i].Cells[0].Text) + "";
                cmd.CommandText = SQL;
                cmd.ExecuteNonQuery();
                con.Close();

                GridView1.DataSourceID = "Datacmd";
                break;

            // case : etc...
            default:
                break;
        }
    }
}

データベースへの自動更新は正常に機能しています。

ただし、Gridview1 (ShowEditButton="True") でボタン編集をクリックすると、Gridview1 で行を編集できません。ページが自動更新されるためです。

Gridview編集モードでページの自動更新を停止するにはどうすればよいですか?

4

3 に答える 3

0

ありがとう、タイマーを使用してこれを解決しました。それは魅力のように機能します 私のコード:

  protected void Timer1_Tick(object sender, EventArgs e)
        {
            con = new MySqlConnection(conStr);
            con.Open();
            cmd = new MySql.Data.MySqlClient.MySqlCommand();
            cmd.Connection = con;
            con = new MySql.Data.MySqlClient.MySqlConnection(conStr);

            //Auto refesh database
            GridView1.DataSourceID = "Datacmd";

            //Auto get status(cells[7]) of pid(cells[6])
            count = GridView1.Rows.Count;
            string server = "";
            string pid = "";
            string status = "";

            for (int i = 0; i < count; i++)
            {
                server = GridView1.Rows[i].Cells[1].Text;
                switch (server)
                {
                    //server locahost
                    case "localhost":
                        pid = GridView1.Rows[i].Cells[6].Text;
                        status = ws.GetStatusProcess(pid);
                        string SQL = "UPDATE command SET status='" + status + "' WHERE id=" + int.Parse(GridView1.Rows[i].Cells[0].Text) + "";
                        cmd.CommandText = SQL;
                        cmd.ExecuteNonQuery();
                        con.Close();
                        GridView1.DataSourceID = "Datacmd";
                        break;

                    default:
                        break;
                }
            }
        }

[http://www.codeproject.com/Questions/359958/how-to-use-timer-in-asp-net][1]
于 2013-10-29T03:32:35.870 に答える
0

1 つの可能性は、セッション変数を使用して状態を保存することです。グリッドビューの RowEditing イベントで値を設定し、RowUpdated イベントと RowCancelingEdit イベントで値をリセットできます。Page_Load メソッドでは、次のようなものを使用できます。

if (Session["myFlag"] == null)
{
    doStuff...
}
于 2013-10-28T10:42:44.450 に答える