2

方法 (ASP.NET グリッド ビューから行を動的に追加および削除する方法) について質問する前に、記事 ( http://www.codeproject.com/Articles/467788/Dynamically-adding-and-deletingを使用して回答を受け取ります) -rows-from-ASP-NET )。この記事では、タイプごとに (手動で) フィールドを完成させるときに行を追加します。ドロップダウンリストから値を選択した後、行のいくつかのフィールドを完成させたいので、使用しました

  public static List<string> Docprpp = new List<string>(3);

最初の行を追加する場合は問題ありません。ドロップダウンリストからドキュメントを選択すると、フィールドに (ドキュメント番号、改訂、タイトル) を入力でき、他のフィールドについては手動で入力できます。

dtCurrentTable.Rows[i - 1]["Col1"] = Docprpp[0];
                dtCurrentTable.Rows[i - 1]["Col2"] = Docprpp[1];
                dtCurrentTable.Rows[i - 1]["Col3"] = Docprpp[2];
                dtCurrentTable.Rows[i - 1]["Col4"] = TextBoxsh.Text;
                dtCurrentTable.Rows[i - 1]["Col5"] = DrpStatus.SelectedValue;
                dtCurrentTable.Rows[i - 1]["Col6"] = DrpClass.SelectedValue;
                rowIndex++;
            }
            dtCurrentTable.Rows.Add(drCurrentRow);
            ViewState["CurrentTable"] = dtCurrentTable;

            grvdocumentDetails.DataSource = dtCurrentTable;
            grvdocumentDetails.DataBind();

        }
    }
    else
    {
        Response.Write("ViewState is null");
    }

    Docprpp.Clear();
    SetPreviousData();

}

しかし、2行目以上を追加してドロップダウンリストから異なる値を使用するのが好きですが、写真に従ってすべての行(古い、新しい)同じ(ドキュメント番号、改訂、タイトル)に対応します。

 (public static List<string> Docprpp = new List<string>(3);)

この変数を使用して問題を解決する方法を教えてください。 ここに画像の説明を入力

 protected void ddlProjectDocument_SelectedIndexChanged(object sender, EventArgs e)
{
    using (_DataContext = new EDMSDataContext())
    {
        int x = Convert.ToInt32(ddlProjectDocument.SelectedValue);
        var subject = from y in _DataContext.tblDocuments
                      where y.DocId == x
                      select y.TITLE;

        var docno = from z in _DataContext.tblDocuments
                    where z.DocId == x
                    select z.DocumentNo;




        Docprpp.Add(docno.SingleOrDefault().ToString());



        var MaxRev = _DataContext.tblTransmittalls.Where(rev => rev.DocID == x).Max(rev => rev.REV);
        int newRev = (MaxRev == null) ? 0 : Convert.ToInt32(MaxRev) + 1;

        Docprpp.Add(newRev.ToString());

        var MaxReview = _DataContext.Project_Documents.Where(rev => rev.DocId == x && rev.Rev == Convert.ToInt32(MaxRev)).Max(rev => rev.Review);
        int newReview = (MaxReview == null) ? newReview = 1 : Convert.ToInt32(MaxReview) + 1;

        Docprpp.Add(subject.SingleOrDefault().ToString());

    }
}

 private void AddNewRow()
{
    int rowIndex = 0;

    if (ViewState["CurrentTable"] != null)
    {
        DataTable dtCurrentTable = (DataTable)ViewState["CurrentTable"];
        DataRow drCurrentRow = null;
        if (dtCurrentTable.Rows.Count > 0)
        {
            for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
            {
                TextBox TextBoxsh = (TextBox)grvdocumentDetails.Rows[rowIndex].Cells[4].FindControl("txtsh");
                DropDownList DrpStatus = (DropDownList)grvdocumentDetails.Rows[rowIndex].Cells[5].FindControl("drpStatus");
                DropDownList DrpClass = (DropDownList)grvdocumentDetails.Rows[rowIndex].Cells[6].FindControl("drpClass");
                drCurrentRow = dtCurrentTable.NewRow();
                drCurrentRow["RowNumber"] = i + 1;

                dtCurrentTable.Rows[i - 1]["Col1"] = Docprpp[0];
                dtCurrentTable.Rows[i - 1]["Col2"] = Docprpp[1];
                dtCurrentTable.Rows[i - 1]["Col3"] = Docprpp[2];
                dtCurrentTable.Rows[i - 1]["Col4"] = TextBoxsh.Text;
                dtCurrentTable.Rows[i - 1]["Col5"] = DrpStatus.SelectedValue;
                dtCurrentTable.Rows[i - 1]["Col6"] = DrpClass.SelectedValue;
                rowIndex++;
            }
            dtCurrentTable.Rows.Add(drCurrentRow);
            ViewState["CurrentTable"] = dtCurrentTable;

            grvdocumentDetails.DataSource = dtCurrentTable;
            grvdocumentDetails.DataBind();

        }
    }
    else
    {
        Response.Write("ViewState is null");
    }

    Docprpp.Clear();
    SetPreviousData();

}

 private void SetPreviousData()
{
    int rowIndex = 0;
    if (ViewState["CurrentTable"] != null)
    {
        DataTable dt = (DataTable)ViewState["CurrentTable"];
        if (dt.Rows.Count > 0)
        {
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Label TextBoxDoc = (Label)grvdocumentDetails.Rows[rowIndex].Cells[1].FindControl("txtDoc");
                Label TextBoxRev = (Label)grvdocumentDetails.Rows[rowIndex].Cells[2].FindControl("txtRev");
                Label TextBoxtitle = (Label)grvdocumentDetails.Rows[rowIndex].Cells[3].FindControl("txttitle");
                TextBox TextBoxsh = (TextBox)grvdocumentDetails.Rows[rowIndex].Cells[4].FindControl("txtsh");
                DropDownList DrpStatus = (DropDownList)grvdocumentDetails.Rows[rowIndex].Cells[5].FindControl("drpStatus");
                DropDownList DrpClass = (DropDownList)grvdocumentDetails.Rows[rowIndex].Cells[6].FindControl("drpClass");
                // drCurrentRow["RowNumber"] = i + 1;

                grvdocumentDetails.Rows[i].Cells[0].Text = Convert.ToString(i + 1);
                TextBoxDoc.Text = dt.Rows[i]["Col1"].ToString();
                TextBoxRev.Text = dt.Rows[i]["Col2"].ToString();
                TextBoxtitle.Text = dt.Rows[i]["Col3"].ToString();
                TextBoxsh.Text = dt.Rows[i]["Col4"].ToString();
                DrpStatus.SelectedValue = dt.Rows[i]["Col5"].ToString();
                DrpClass.SelectedValue = dt.Rows[i]["Col6"].ToString();

                rowIndex++;
            }
        }
    }
}
4

1 に答える 1