Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > สอบถามปัญหาเรื่อง GridView RowEditing เมื่อกดปุ่ม Edit แล้วเกิด Row ว่าง 1 บรรทัด ซึ่งไม่ใช่บรรทัดที่ต้องการแก้ไขข้อมูล



 

สอบถามปัญหาเรื่อง GridView RowEditing เมื่อกดปุ่ม Edit แล้วเกิด Row ว่าง 1 บรรทัด ซึ่งไม่ใช่บรรทัดที่ต้องการแก้ไขข้อมูล

 



Topic : 106299



โพสกระทู้ ( 81 )
บทความ ( 0 )



สถานะออฟไลน์




เมื่อกดปุ่ม Edit แล้วเกิด Row ว่าง 1 บรรทัด ซึ่งไม่ใช่บรรทัดที่ต้องการแก้ไขข้อมูล

รูป 1

Row ว่าง 1 บรรทัดที่เกิดขึ้น
รูป 2

ต้องกดปุ่ม Edit อีกครั้ง ถึงจะได้บรรทัดที่ต้องการแก้ไขข้อมูล
รูป 3

ซึ่งได้ทำการ Debug แล้ว พบที่มาของปัญหาแล้ว แต่ไม่สามารถแก้ไขได้
อยากจะให้ผู้รู้ช่วยแนะนำหน่อยค่ะ ปัญหาอยู่ที่ gvDesc_RowCreated ค่ะ

Code (C#)
 string strPreviousRowID = string.Empty;
    int intSubTotalIndex = 1;
    double dblSubTotalAmount = 0;
    double dblGrandTotalAmount = 0;

private void LoadGrid()
    {
        double TotalAudit = 0.0;
        double TotalMarketing = 0.0;

        DataTable dt = (DataTable)Session["gvDesc"];
        if (dt.Rows.Count > 0)
        {
            dt.DefaultView.Sort = "FundType";
            gvDesc.DataSource = dt;
            gvDesc.DataBind();
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["FundType"].ToString() == "Current Year Audit Fund")
                {
                    TotalAudit = TotalAudit + Convert.ToDouble(dr["Amount"]);
                }
                else
                {
                    TotalMarketing = TotalMarketing + Convert.ToDouble(dr["Amount"]);
                }
            }
            btnCreate.Visible = true;
            Session["gvDesc"] = dt.DefaultView.ToTable();
        }
        else
        {
            gvDesc.DataSource = dt;
            gvDesc.DataBind();
            btnCreate.Visible = false;
        }
        dt = null;
     }

protected void gvDesc_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gvDesc.EditIndex = e.NewEditIndex;
        LoadGrid();
    }

protected void gvDesc_RowCreated(object sender, GridViewRowEventArgs e)
    {
        bool IsSubTotalRowNeedToAdd = false;
        bool IsGrandTotalRowNeedToAdd = false;

        if ((strPreviousRowID != string.Empty) && (DataBinder.Eval(e.Row.DataItem, "FundType") != null))
            if (strPreviousRowID != DataBinder.Eval(e.Row.DataItem, "FundType").ToString())
                IsSubTotalRowNeedToAdd = true;

        if ((strPreviousRowID != string.Empty) && (DataBinder.Eval(e.Row.DataItem, "FundType") == null))
        {
            IsSubTotalRowNeedToAdd = true;
            IsGrandTotalRowNeedToAdd = true;
            intSubTotalIndex = 0;
        }

        if (IsSubTotalRowNeedToAdd)
        {
            GridView grdViewProducts = (GridView)sender;

            // Creating a Row
            GridViewRow SubTotalRow = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert);

            //Adding Total Cell 
            TableCell HeaderCell = new TableCell();
            HeaderCell.Text = "Total :";
            HeaderCell.HorizontalAlign = HorizontalAlign.Right;
            HeaderCell.ColumnSpan = 6; // For merging first, second row cells to one
            HeaderCell.CssClass = "txtBold";
            SubTotalRow.Cells.Add(HeaderCell);

            //Adding Total Amount Column
            HeaderCell = new TableCell();
            HeaderCell.Text = string.Format("{0:#,###.00}", dblSubTotalAmount);
            HeaderCell.HorizontalAlign = HorizontalAlign.Center;
            HeaderCell.CssClass = "txtBold";
            SubTotalRow.Cells.Add(HeaderCell);

            //Adding the Row at the RowIndex position in the Grid
//*** ปัญหาอยู่ตรงนี้ค่ะ ถ้าปิดบรรทัดนี้ไป จะไม่เกิดปัญหา แต่ข้อมูล Total ก็จะไม่แสดงด้วยเช่นกันค่ะ ***//
            grdViewProducts.Controls[0].Controls.AddAt(e.Row.RowIndex + intSubTotalIndex, SubTotalRow);
            intSubTotalIndex++;

            dblSubTotalAmount = 0;
        }
        if (IsGrandTotalRowNeedToAdd)
        {
            GridView grdViewProducts = (GridView)sender;

            // Creating a Row
            GridViewRow GrandTotalRow = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Insert);

            //Adding Grand Total Cell 
            TableCell HeaderCell = new TableCell();
            HeaderCell.Text = "<br/>Grand Total :";
            HeaderCell.HorizontalAlign = HorizontalAlign.Right;
            HeaderCell.ColumnSpan = 6; // For merging first, second row cells to one
            HeaderCell.CssClass = "txtBold";
            GrandTotalRow.Cells.Add(HeaderCell);

            //Adding Total Revenue Column
            HeaderCell = new TableCell();
            HeaderCell.Text = "<br/>" + string.Format("{0:#,###.00}", dblGrandTotalAmount);
            HeaderCell.HorizontalAlign = HorizontalAlign.Center;
            HeaderCell.CssClass = "txtBold";
            GrandTotalRow.Cells.Add(HeaderCell);

            //Adding the Row at the RowIndex position in the Grid
            grdViewProducts.Controls[0].Controls.AddAt(e.Row.RowIndex, GrandTotalRow);
        }
    }

    protected void gvDesc_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            strPreviousRowID = DataBinder.Eval(e.Row.DataItem, "FundType").ToString();
            double dblAmount = Convert.ToDouble(DataBinder.Eval(e.Row.DataItem, "Amount").ToString());
            dblSubTotalAmount += dblAmount;
            dblGrandTotalAmount += dblAmount;

            if (strPreviousRowID == "Current Year Audit Fund")
            {
                lblTotalAudit.Text = string.Format("{0:#,###.00}", dblSubTotalAmount);
            }
            else
            {
                lblTotalMarketing.Text = string.Format("{0:#,###.00}", dblSubTotalAmount);
            }

            Label lblActionCode = (Label)e.Row.FindControl("lblActionCode");
            if (lblActionCode != null)
            {
                if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "FundType")) == "Current Year Audit Fund")
                {
                    lblActionCode.Text = Session["ActionCode1"].ToString();
                }
                else
                {
                    lblActionCode.Text = Session["ActionCode2"].ToString();
                }
            }

            HiddenField hdfID = (HiddenField)e.Row.FindControl("hdfID");
            LinkButton lbtnContact = (LinkButton)e.Row.FindControl("lbtnContact");
            Button btnEdit = (Button)e.Row.FindControl("btnEdit");
            if (Session["DataContact"] != null)
            {
                lbtnContact.Visible = false;
                DataTable dtDataContact = (DataTable)Session["DataContact"];
                for (int i = 0; i < dtDataContact.Rows.Count; i++)
                {
                    string AssetID = dtDataContact.Rows[i]["AssetID"].ToString();
                    if (hdfID.Value == AssetID)
                    {
                        lbtnContact.Visible = true;
                        btnEdit.Visible = false;
                        break;
                    }
                    else
                    {
                        lbtnContact.Visible = false;
                    }
                }
            }
            else
            {
                lbtnContact.Visible = false;
            }
        }
    }




Tag : .NET, Web (ASP.NET), C#









ประวัติการแก้ไข
2014-02-26 14:25:33
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-02-26 14:23:28 By : yoknarak View : 1253 Reply : 3
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

มันคือ Edit Item หรือเปล่าครับ พวก LoadGrid จะต้องโหลดครั้งเดียวครับ ตอนที่ PostBack ไม่ต้อง Bind ใหม่ครับ

Code (C#)
if(!Page.IsPostBack)
{
  LoadGrid();
}







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-27 22:09:39 By : mr.win
 


 

No. 2



โพสกระทู้ ( 81 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2014-02-27 22:09:39
รายละเอียดของการตอบ ::
ตรงส่วนนี้ก็ใส่ไว้แล้วตั้งแต่ต้นค่ะ
ไม่รู้ว่าจะแก้ปัญหายังไงเลยค่ะตอนนี้
เพราะยังเป็นเหมือนเดิมอยู่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-28 14:47:33 By : yoknarak
 

 

No. 3



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

มันเป็น Footer หรือเปล่าครับ ลองกำหนด Footer ของ False ดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-03-01 10:35:14 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : สอบถามปัญหาเรื่อง GridView RowEditing เมื่อกดปุ่ม Edit แล้วเกิด Row ว่าง 1 บรรทัด ซึ่งไม่ใช่บรรทัดที่ต้องการแก้ไขข้อมูล
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่