0

グリッドビューアプリケーションを作成し、テンプレートの外に[新しい行を追加]ボタンがあります。新しい行を追加すると、[編集と削除]ボタンが表示されます。私がやろうとしているのは、[新しい行の追加]ボタンをクリックしたときに、編集モードで新しい行を開くようにしたいので、空の情報で空白の行を追加することはできません。したがって、基本的に、新しい行を追加して情報を入力しないと、作成されません。

説明をもっと徹底する必要がある場合は、質問してください。

どんな助けでもありがたいです。

ありがとうございました

4

2 に答える 2

0

私は自分で問題を理解することになった。今では完璧に動作します。私もデータベースを変更しましたが、コードを提供しています。もっと簡単な方法があると思いますが、これが私にできる最善の方法でした。皆さんがもっと簡単な方法で入力を提供できれば、私はそれをいただければ幸いです。

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
    {

        if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked
        {
            gv.DataBind();

            DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString");

            string transCode = "", fundCode = "", BSA_CD = "", DP_TYPE = "";

            if (d.Rows.Count > 0)
            {
                transCode = d.Rows[0]["TRANS_CD"].ToString();
                fundCode = d.Rows[0]["FUND_CD"].ToString();
                BSA_CD = d.Rows[0]["BSA_CD"].ToString();
                DP_TYPE = d.Rows[0]["DP_TYPE"].ToString();

                if (transCode.Trim().Length > 0)
                {
                    dbcon.Execute("INSERT INTO CIS.CIS_TRANS (TRANS_CD) VALUES('')", "ProjectCISConnectionString");

                    gv.DataBind();
                }
            }

            gv.EditIndex = gv.Rows.Count - 1;

        }
        else if (e.CommandName == "Cancel")
        {
            DataTable d = dbcon.GetDataTable("SELECT * FROM CIS.CIS_TRANS ORDER BY ID DESC", "ProjectCISConnectionString");

            string transCode = "";

            if (d.Rows.Count > 0)
            {
                transCode = d.Rows[0]["TRANS_CD"].ToString();

                if (transCode.Trim().Length == 0)
                {
                    dbcon.Execute(string.Format("DELETE CIS.CIS_TRANS WHERE ID = '{0}'", d.Rows[0]["ID"]), "ProjectCISConnectionString");

                    gv.DataBind();
                }
            }


        }
    }
于 2012-08-06T23:16:36.023 に答える
-3

行を追加すると、これはかなり簡単です。

新しく追加された行の編集インデックスを設定する必要があります。

gv.EditIndex = gv.Rows.Count-1;

OP用に編集

これは汚いコードです、私はあなたに私が何を意味するかを示して、それをかなり速く泡立てました。ページにGridView1というグリッドビューがあるとします。

namespace HelpSO3
{
    public partial class _Default : System.Web.UI.Page
    {
        List<string> t = new List<string>();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                string s = "hi";
                t.Add(s);
                GridView1.DataSource = t;
                GridView1.DataBind();
                Session["MyList"] = t;
            }
        }

        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            t = (List<string>)Session["MyList"];
            t.Add("Another String");
            GridView1.DataSource = t;
            GridView1.DataBind();
            GridView1.EditIndex = GridView1.Rows.Count - 1;
            GridView1.DataBind();
            Session["MyList"] = t;
        }
    }
}

したがって、Button1_Clickイベントは、値が「Another String」の新しい行を追加し、グリッドビューをバインドし、EditIndex値を最新の行に設定して再バインドします。その単純な。

あなたの場合、あなたのコードは次のようになります:

 protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Insert") //- this is needed to explain that the INSERT command will only work when INSERT is clicked
        {
            dbcon.Execute("INSERT INTO PROJ_ASP (TRANS_CD) VALUES('')", "ProjectASPConnectionString");

            gv.DataBind();
            gv.EditIndex = gv.Rows.Count-1;
            gv.DataBind();
        }

    }
于 2012-07-25T15:55:09.247 に答える