Page 1 of 1

สอบถามการส่งค่า ID ผ่าน modal pop-up

Posted: Thu Apr 05, 2018 10:37 pm
by phiyaphat
เมื่อไฟล์ต่างๆถูกบันทึกลงฐานข้อมูลแล้วเรียกชื่อไฟล์มาแสดงใน Gridview ดังภาพ ซึ่งมีปุ่มให้คลิกเข้าไปแก้ไขไฟล์ผ่าน modal pop-up ดังภาพที่ 2 โดยใช้ Hiddenfield เป็นตัวเก็บค่า ID ของแต่ละไฟล์ เมื่อคลิกปุ่มแก้ไขจะส่งค่า ID ไปในฟังก์ชัน editClick เมื่อ pop-up แสดงขึ้นมาแล้วเลือกไฟล์ที่ต้องการอัพเดท จากนั้นคลิกปุ่ม save จะเข้าฟังก์ชัน EditFileUpload แต่ปัญหาอยู่ตรงที่ค่า ID จากปุ่มแก้ไขไม่เข้าฟังก์ชัน EditFileUpload ค่ะ เลยไม่สามารถทำการ Update ไฟล์ได้ รบกวนขอคำแนะนำได้ไหมคะ

Code: Select all

protected void editClick(object sender, EventArgs e)
        {
            HiddenDocID.Value = (sender as LinkButton).CommandArgument;
            ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "open();", true);
            
        }

        protected void EditFileUpload(object sender, EventArgs e)
        {
            string id = HiddenDocID.Value;
            string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
            string contentType = FileUpload1.PostedFile.ContentType;
            try
            {
                using (Stream fs = FileUpload1.PostedFile.InputStream)
                {
                    using (BinaryReader br = new BinaryReader(fs))
                    {
                        byte[] bytes = br.ReadBytes((Int32)fs.Length);
                        string strConString = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString;
                        using (SqlConnection con = new SqlConnection(strConString))
                        {
                            string query = @"UPDATE Documents SET Doc_name = @Doc_name, Doc_type = @Doc_type, Data = @Data where [Doc_id] = @Doc_id";
                            using (SqlCommand cmd = new SqlCommand(query))
                            {
                                cmd.Connection = con;
                                cmd.Parameters.AddWithValue("@Doc_name", filename);
                                cmd.Parameters.AddWithValue("@Doc_type", contentType);
                                cmd.Parameters.AddWithValue("@Data", bytes);
                                cmd.Parameters.AddWithValue("@Doc_id", id);
                                con.Open();
                                cmd.ExecuteNonQuery();
                                con.Close();
                            }
                        }
                    }

                }
            }
            catch (Exception ex)
            {
                string error = ex.Message;
            }
        }

Re: สอบถามการส่งค่า ID ผ่าน modal pop-up

Posted: Thu Apr 05, 2018 11:32 pm
by snasui
:D HiddenDocID ได้ประกาศเป็นตัวแปร Field ใช่หรือไม่ครับ

หากใช่ Code ควรจะทำงานได้ ไม่เช่นนั้นก็ต้องลอง Debug ดูว่าค่าที่ Assign ให้กับ HiddenDocID ใน editClick กับ id ใน EditFileUpload คือตัวเดียวกันหรือไม่ครับ

Re: สอบถามการส่งค่า ID ผ่าน modal pop-up

Posted: Fri Apr 06, 2018 7:24 am
by phiyaphat
ใช้ HiddenField แบบนี้ค่ะ แต่ค่า ID ไม่ยอมส่งค่าเข้าฟังก์ชัน EditFileUpload ค่ะ ลอง Debug แล้วได้ตามภาพเลยค่ะ

Code: Select all

<asp:HiddenField ID="HiddenDocID" runat="server" Value="" />

Code: Select all

<asp:LinkButton ID="Edit" runat="server" class="btn btn-danger btn-xs" data-target="exampleModal"
                                            OnClick="editClick" CommandArgument='<%# Eval("Doc_id")%>'><span class="glyphicon glyphicon-pencil" ></span></asp:LinkButton>
                                        </span>

Re: สอบถามการส่งค่า ID ผ่าน modal pop-up

Posted: Fri Apr 06, 2018 8:48 am
by snasui
:D ลองดูวิธีการตาม Link นี้ว่าช่วยแก้ปัญหาได้หรือไม่ครับ https://stackoverflow.com/questions/232 ... able-scope

สำหรับการโพสต์ Code ให้ขึ้นต้นด้วย [code] และปิดด้วย [/code] เพื่อให้แสดงเป็น Code ด้านบนผมแก้ให้แล้วทั้งสองโพสต์ การโพสต์แบบ Inline คือขึ้นต้นด้วย [c] และปิดด้วย [/c] ใช้เพื่อกล่าวถึง Code ในการอธิบายข้อความตามปกติ หากนำมาใช้กับการโพสต์ Code จะอ่านลำบากครับ