簡體   English   中英

如何使用GridView控件在單個行列中執行多個單元格

[英]How to do multiple cells in a single row column using GridView Control

我在這里使用GridView控件。我的輸出屏幕是這個。

在此處輸入圖片說明

我的編碼是..

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add(new DataColumn("S.No", typeof(string)));
        dt.Columns.Add(new DataColumn("Article No", typeof(string)));
        dt.Columns.Add(new DataColumn("Item Description", typeof(string)));
        dt.Columns.Add(new DataColumn("Order Quantity", typeof(string)));
        dt.Columns.Add(new DataColumn("UOM", typeof(string)));
        dt.Columns.Add(new DataColumn("Rate", typeof(string)));
        dt.Columns.Add(new DataColumn("Currency", typeof(string)));
        dt.Columns.Add(new DataColumn("Amount", typeof(string)));
        DataRow dr = dt.NewRow();
        dr["S.No"] = 1;
        dr["Article No"] = string.Empty;
        dr["Item Description"] = string.Empty;
        dr["Order Quantity"] = 0;
        dr["UOM"] = string.Empty;
        dr["Rate"] = 0.00;
        dr["Currency"] = string.Empty;
        dr["Amount"] = 0.00;
        dt.Rows.Add(dr);
        ViewState["currenttable"] = dt;
        GridView1.DataSource = dt;
        GridView1.DataBind();


        DropDownList box2 = (DropDownList)GridView1.Rows[0].Cells[1].FindControl("DropDownList1");
        box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo();
        box2.DataTextField = "Port_Number";
        box2.DataValueField = "Description";
        box2.DataBind();
        box2.Items.Insert(0, " ");


        DropDownList box12 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList3");
        box12.DataSource = SIMBL.ShowSimpleUnitItemInfo();
        box12.DataTextField = "Name";
        box12.DataValueField = "Symbol";
        box12.DataBind();
        box12.Items.Insert(0, " ");

        DropDownList box13 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList4");
        box13.DataSource = SIMBL.ShowSimpleUnitItemInfo();
        box13.DataTextField = "Name";
        box13.DataValueField = "Symbol";
        box13.DataBind();
        box13.Items.Insert(0, " ");

        DropDownList box14 = (DropDownList)GridView1.Rows[0].Cells[4].FindControl("DropDownList5");
        box14.DataSource = SIMBL.ShowSimpleUnitItemInfo();
        box14.DataTextField = "Name";
        box14.DataValueField = "Symbol";
        box14.DataBind();
        box14.Items.Insert(0, " ");
    }
}


public void addnewrow()
{
    int rowIndex = 0;

    if (ViewState["currenttable"] != null)
    {
        DataTable dtCurrentTable = (DataTable)ViewState["currenttable"];
        DataRow drCurrentRow = null;


        for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
        {
            //extract the TextBox values
            TextBox box1 = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("TextBox6");
            DropDownList box2 = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("DropDownList1");
            TextBox box3 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox8");
            TextBox box4 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox9");
            TextBox box5 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox10");
            TextBox box6 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox11");
            Label box7 = (Label)GridView1.Rows[rowIndex].Cells[3].FindControl("Label6");
            TextBox box8 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox13");
            TextBox box9 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox14");
            TextBox box10 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox15");
            Label box11 = (Label)GridView1.Rows[rowIndex].Cells[4].FindControl("Label7");
            DropDownList box12 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList3");
            DropDownList box13 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList4");
            DropDownList box14 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList5");
            Label box15 = (Label)GridView1.Rows[rowIndex].Cells[5].FindControl("Label8");
            TextBox box16 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox17");
            TextBox box17 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox18");
            TextBox box18 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox19");
            Label box19 = (Label)GridView1.Rows[rowIndex].Cells[6].FindControl("Label9");
            DropDownList box20 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList7");
            DropDownList box21 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList8");
            DropDownList box22 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList9");
            Label box23 = (Label)GridView1.Rows[rowIndex].Cells[7].FindControl("Label0");
            TextBox box24 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox21");
            TextBox box25 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox22");
            TextBox box26 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox23");

            TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");

            drCurrentRow = dtCurrentTable.NewRow();
            drCurrentRow["S.No"] = i + 1;


            dtCurrentTable.Rows[i - 1]["Article No"] = box2.Text;

            dtCurrentTable.Rows[i - 1]["Item Description"] = box3.Text + "," + box4.Text + "," + box5.Text + "," + box6.Text;

            dtCurrentTable.Rows[i - 1]["Order Quantity"] = box8.Text + "," + box9.Text + "," + box10.Text;

            dtCurrentTable.Rows[i - 1]["UOM"] = box12.Text + "," + box13.Text + "," + box14.Text;

            dtCurrentTable.Rows[i - 1]["Rate"] = box16.Text + "," + box17.Text + "," + box18.Text;

            dtCurrentTable.Rows[i - 1]["Currency"] = box20.Text + "," + box21.Text + "," + box22.Text;

            dtCurrentTable.Rows[i - 1]["Amount"] = box24.Text + "," + box25.Text + "," + box26.Text;


            rowIndex++;
        }


        dtCurrentTable.Rows.Add(drCurrentRow);
        ViewState["currenttable"] = dtCurrentTable;

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


        for (int i = 0; i <= dtCurrentTable.Rows.Count - 1; i++)
        {
            DropDownList box2 = (DropDownList)GridView1.Rows[i].Cells[1].FindControl("DropDownList1");
            box2.DataSource = SIMBL.ShowSalesOrderArticleNumberInfo();
            box2.DataTextField = "Port_Number";
            box2.DataValueField = "Description";
            box2.DataBind();
            box2.Items.Insert(0, " ");

            DropDownList box12 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList3");
            box12.DataSource = SIMBL.ShowSimpleUnitItemInfo();
            box12.DataTextField = "Name";
            box12.DataValueField = "Symbol";
            box12.DataBind();
            box12.Items.Insert(0, " ");

            DropDownList box13 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList4");
            box13.DataSource = SIMBL.ShowSimpleUnitItemInfo();
            box13.DataTextField = "Name";
            box13.DataValueField = "Symbol";
            box13.DataBind();
            box13.Items.Insert(0, " ");

            DropDownList box14 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList5");
            box14.DataSource = SIMBL.ShowSimpleUnitItemInfo();
            box14.DataTextField = "Name";
            box14.DataValueField = "Symbol";
            box14.DataBind();
            box14.Items.Insert(0, " ");
        }        
    }
    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 - 1; i++)
            {
                TextBox box1 = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("TextBox6");
                DropDownList box2 = (DropDownList)GridView1.Rows[rowIndex].Cells[1].FindControl("DropDownList1");
                TextBox box3 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox8");
                TextBox box4 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox9");
                TextBox box5 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox10");
                TextBox box6 = (TextBox)GridView1.Rows[rowIndex].Cells[2].FindControl("TextBox11");
                Label box7 = (Label)GridView1.Rows[rowIndex].Cells[3].FindControl("Label6");
                TextBox box8 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox13");
                TextBox box9 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox14");
                TextBox box10 = (TextBox)GridView1.Rows[rowIndex].Cells[3].FindControl("TextBox15");
                Label box11 = (Label)GridView1.Rows[rowIndex].Cells[4].FindControl("Label7");
                DropDownList box12 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList3");
                DropDownList box13 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList4");
                DropDownList box14 = (DropDownList)GridView1.Rows[rowIndex].Cells[4].FindControl("DropDownList5");
                Label box15 = (Label)GridView1.Rows[rowIndex].Cells[5].FindControl("Label8");
                TextBox box16 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox17");
                TextBox box17 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox18");
                TextBox box18 = (TextBox)GridView1.Rows[rowIndex].Cells[5].FindControl("TextBox19");
                Label box19 = (Label)GridView1.Rows[rowIndex].Cells[6].FindControl("Label9");
                DropDownList box20 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList7");
                DropDownList box21 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList8");
                DropDownList box22 = (DropDownList)GridView1.Rows[rowIndex].Cells[6].FindControl("DropDownList9");
                Label box23 = (Label)GridView1.Rows[rowIndex].Cells[7].FindControl("Label0");
                TextBox box24 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox21");
                TextBox box25 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox22");
                TextBox box26 = (TextBox)GridView1.Rows[rowIndex].Cells[7].FindControl("TextBox23");

                TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");

                box1.Text = dt.Rows[i]["S.No"].ToString();
                box2.Text = dt.Rows[i]["Article No"].ToString();

                if (Convert.ToString(dt.Rows[i]["Item Description"]).Trim() != "")
                {
                    string[] strDesc = Convert.ToString(dt.Rows[i]["Item Description"]).Trim().Split(',');
                    box3.Text = strDesc[0].ToString();
                    box4.Text = strDesc[1].ToString();
                    box5.Text = strDesc[2].ToString();
                    box6.Text = strDesc[3].ToString();
                }

                if (Convert.ToString(dt.Rows[i]["Order Quantity"]).Trim() != "")
                {
                    string[] strDesc = Convert.ToString(dt.Rows[i]["Order Quantity"]).Trim().Split(',');
                    box8.Text = strDesc[0].ToString();
                    box9.Text = strDesc[1].ToString();
                    box10.Text = strDesc[2].ToString();
                }

                if (Convert.ToString(dt.Rows[i]["UOM"]).Trim() != "")
                {
                    string[] strDesc = Convert.ToString(dt.Rows[i]["UOM"]).Trim().Split(',');
                    box12.Text = strDesc[0].ToString();
                    box13.Text = strDesc[1].ToString();
                    box14.Text = strDesc[2].ToString();
                }

                if (Convert.ToString(dt.Rows[i]["Rate"]).Trim() != "")
                {
                    string[] strDesc = Convert.ToString(dt.Rows[i]["Rate"]).Trim().Split(',');
                    box16.Text = strDesc[0].ToString();
                    box17.Text = strDesc[1].ToString();
                    box18.Text = strDesc[2].ToString();
                }

                if (Convert.ToString(dt.Rows[i]["Currency"]).Trim() != "")
                {
                    string[] strDesc = Convert.ToString(dt.Rows[i]["Currency"]).Trim().Split(',');
                    box20.Text = strDesc[0].ToString();
                    box21.Text = strDesc[1].ToString();
                    box22.Text = strDesc[2].ToString();
                }

                if (Convert.ToString(dt.Rows[i]["Amount"]).Trim() != "")
                {
                    string[] strDesc = Convert.ToString(dt.Rows[i]["Amount"]).Trim().Split(',');
                    box24.Text = strDesc[0].ToString();
                    box25.Text = strDesc[1].ToString();
                    box26.Text = strDesc[2].ToString();

                }

                rowIndex++;
            }
        }
    }
}

//DropDownList Selection Change..
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["currenttable"];

        for (int i = 0; i <= dt.Rows.Count - 1; i++)
        {
            TextBox box3 = (TextBox)GridView1.Rows[i].Cells[2].FindControl("TextBox8");
            DropDownList box2 = (DropDownList)GridView1.Rows[i].Cells[1].FindControl("DropDownList1");
            box3.Text = box2.SelectedItem.Value;
        }

}


protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["currenttable"];

    for (int i = 0; i <= dt.Rows.Count - 1; i++)
    {
        DropDownList box12 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList3");
        box12.Text = box12.SelectedItem.Value;
    }
}

protected void DropDownList4_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["currenttable"];

    for (int i = 0; i <= dt.Rows.Count - 1; i++)
    {
        DropDownList box13 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList4");
        box13.Text = box13.SelectedItem.Value;
    }
}

protected void DropDownList5_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["currenttable"];

    for (int i = 0; i <= dt.Rows.Count - 1; i++)
    {
        DropDownList box14 = (DropDownList)GridView1.Rows[i].Cells[4].FindControl("DropDownList5");
        box14.Text = box14.SelectedItem.Value;
    }
}


protected void DropDownList7_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["currenttable"];

    decimal a = 0.00M;
    for (int i = 0; i <= dt.Rows.Count - 1; i++)
    {
        DropDownList box20 = (DropDownList)GridView1.Rows[i].Cells[6].FindControl("DropDownList7");
        box20.Text = box20.SelectedItem.Value;

        TextBox box24 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox21");
        TextBox box16 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox17");
        TextBox box8 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox13");
        TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");

        box24.Text = (Convert.ToDecimal(box16.Text) * Convert.ToDecimal(box8.Text)).ToString();
        if (a != null)
        {
            box27.Text = (a + Convert.ToDecimal(box24.Text)).ToString();
            a = Convert.ToDecimal(box27.Text);
        }
        else
        {
            a = 0.00M;
        }
    }
}

protected void DropDownList8_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["currenttable"];

    decimal b = 0.00M;

    for (int i = 0; i <= dt.Rows.Count - 1; i++)
    {
        DropDownList box21 = (DropDownList)GridView1.Rows[i].Cells[6].FindControl("DropDownList8");
        box21.Text = box21.SelectedItem.Value;

        TextBox box25 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox22");
        TextBox box17 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox18");
        TextBox box9 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox14");
        TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");

        box25.Text = (Convert.ToDecimal(box17.Text) * Convert.ToDecimal(box9.Text)).ToString();
        if (b != null)
        {
            box27.Text = (Convert.ToDecimal(box27.Text) + Convert.ToDecimal(box25.Text)).ToString();
            b = Convert.ToDecimal(box27.Text);
        }
        else
        {
            b = 0.00M;
        }
    }
}

protected void DropDownList9_SelectedIndexChanged(object sender, EventArgs e)
{
    DataTable dt = (DataTable)ViewState["currenttable"];

    decimal c = 0.00M;

    for (int i = 0; i <= dt.Rows.Count - 1; i++)
    {
        DropDownList box22 = (DropDownList)GridView1.Rows[i].Cells[6].FindControl("DropDownList9");
        box22.Text = box22.SelectedItem.Value;

        TextBox box26 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox23");
        TextBox box18 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox19");
        TextBox box10 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox15");
        TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");

        box26.Text = (Convert.ToDecimal(box18.Text) * Convert.ToDecimal(box10.Text)).ToString();

        if (c != null)
        {
            box27.Text = (Convert.ToDecimal(box27.Text) + Convert.ToDecimal(box26.Text)).ToString();
            c = Convert.ToDecimal(box27.Text);
        }
        else
        {
            c = 0.00M;
        }
    }
}


//For Button Click...
protected void Button1_Click1(object sender, EventArgs e)
{
    addnewrow();
}

在這里,當我進入第一行時,該行中的“ Amount”單元格控件工作正常。在這里,我可以減少該行中的單元格計數值。當我進入下一行時,我需要輸入比單元格計數更多這在上一行單元格計數中。否則,我將收到類似“輸入字符串的格式不正確”的錯誤。

並且總計也基於先前的行單元格進行了計算。.如果在每一行中輸入所有3個單元格值,則表示其工作正常。.如果在截屏階段出現錯誤,則意味着它僅計算出第一個單元格值所有行..

如果我有第1行第3值和第2行第2值,則意味着它正在計算每個先前行中的2個單元格值。 任何人都可以幫助我解決這個問題...

提前致謝..

請在以下所有三個下拉事件的for循環內更改代碼,如下所示

  • DropDownList7_SelectedIndexChanged
  • DropDownList8_SelectedIndexChanged
  • DropDownList9_SelectedIndexChanged

    以獲得“總金額”列...。

將上面的三個事件替換為下面的代碼...

TextBox box26 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox23");
TextBox box18 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox19");
TextBox box10 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox15");
TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");

box26.Text = (Convert.ToDecimal(box18.Text) * Convert.ToDecimal(box10.Text)).ToString();

if (c != null)
{
    box27.Text = (Convert.ToDecimal(box27.Text) + Convert.ToDecimal(box26.Text)).ToString();
    c = Convert.ToDecimal(box27.Text);
}
else
{
    c = 0.00M;
}

與下面的代碼...

TextBox box24 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox21");
        TextBox box16 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox17");
        TextBox box8 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox13");

        TextBox box25 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox23"); // Second Control of Amount Column
        TextBox box26 = (TextBox)GridView1.Rows[i].Cells[7].FindControl("TextBox24"); // Third Control of Amount Column

        TextBox box17 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox18"); // Second control of Rate Column
        TextBox box9 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox14"); // Second control of Order quantity Column

        TextBox box18 = (TextBox)GridView1.Rows[i].Cells[5].FindControl("TextBox19"); // Third control of Rate Column
        TextBox box10 = (TextBox)GridView1.Rows[i].Cells[3].FindControl("TextBox15"); // Third control of Order quantity Column

        TextBox box27 = (TextBox)GridView1.FooterRow.Cells[7].FindControl("TextBox24");

        box24.Text = (Convert.ToDecimal(box16.Text) * Convert.ToDecimal(box8.Text)).ToString();
        box25.Text = (Convert.ToDecimal(box17.Text) * Convert.ToDecimal(box9.Text)).ToString();
        box26.Text = (Convert.ToDecimal(box18.Text) * Convert.ToDecimal(box10.Text)).ToString();

        if (a != null)
        {
            box27.Text = (a + Convert.ToDecimal(box24.Text) + Convert.ToDecimal(box25.Text) + Convert.ToDecimal(box26.Text)).ToString();
            a = Convert.ToDecimal(box27.Text);
        }
        else
        {
            a = 0.00M;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM