ตัวถูกดำเนินการหายไปหลังตัวดำเนินการ 'ชื่อผู้ดำเนินการ'

ฉันกำลังกรอง gridview ของฉันโดยใช้ dataview ฉันกำลังส่งคำสั่ง filter ไปยัง dataview ตามที่กล่าวไว้ด้านล่าง

string strFilter= " 0=0 ";

if (Session["SampleSession"] != null)
        {
            strFilter= strFilter+ " and Emp Name = '" + Session["SampleSession"].ToString() + "' ";
        }
dv.RowFilter = strFilter;  // Throws an error here!

มันแสดงข้อผิดพลาดของตัวถูกดำเนินการที่หายไปหลังตัวดำเนินการ 'ชื่อตัวดำเนินการ' ในบรรทัดด้านบน

ฉันเชื่อว่ามีข้อผิดพลาดเล็กน้อยซึ่งฉันไม่สามารถจับได้


person xorpower    schedule 08.08.2011    source แหล่งที่มา
comment
ค่าของ strFilter คืออะไรเมื่อไปถึงบรรทัดนั้น   -  person Matt Hamilton    schedule 08.08.2011
comment
0=0 ใน string strFilter= " 0=0 "; คืออะไร?   -  person Maysam    schedule 08.08.2011
comment
@Maysam 0=0 จะเป็นตัวยึดตำแหน่งเพื่อให้คุณสามารถผนวกและ EmpName = 'Foo' ได้อย่างง่ายดายและยังคงมีนิพจน์ตัวกรองที่ถูกต้อง   -  person Matt Hamilton    schedule 08.08.2011
comment
@Xor ฉันเดาตอนนี้ (จนกว่าคุณจะให้ค่า strFilter แก่ฉันได้) คือตัวแปร SampleSession ของคุณมีอักขระเครื่องหมายคำพูดเดียวซึ่งทำลายนิพจน์ ประเภทของช่องโหว่การฉีด SQL ของคนจน คุณสามารถส่งชื่อพนักงานเช่น Bob O'Hara ได้ไหม?   -  person Matt Hamilton    schedule 08.08.2011
comment
0=0 และ EmpName = 'Car Air Systems' คือค่าของ strFilter เมื่อถึงบรรทัดที่มีแนวโน้มที่จะเกิดข้อผิดพลาด   -  person xorpower    schedule 08.08.2011
comment
@Xor ตกลงฟังดูดี มีฟิลด์ชื่อ EmpName ใน DataTable ของคุณอย่างแน่นอน?   -  person Matt Hamilton    schedule 08.08.2011
comment
ใช่ มีชื่อฟิลด์ EmpName ใน DataTable ของฉัน ฉันตรวจสอบสิ่งนั้นสองครั้งเมื่อกำหนดให้กับชุดข้อมูล   -  person xorpower    schedule 08.08.2011
comment
ค่า ที่แน่นอน ของ strFilter คืออะไรเมื่อเกิดข้อผิดพลาดนี้   -  person Marc Gravell    schedule 08.08.2011
comment
ข้อมูลโค้ดที่คุณให้มานั้นเป็นโค้ดจริงหรือไม่ ชื่อคอลัมน์ของคุณไม่มีช่องว่างใช่ไหม? เช่น [ชื่อพนักงาน] หรือ [ชื่อพนักงาน]?   -  person Matt Hamilton    schedule 08.08.2011
comment
ใช่.. ชื่อคอลัมน์มีช่องว่างอยู่ ฉันได้รับสาเหตุที่แท้จริงของข้อผิดพลาดที่กำลังมา จะสามารถหลีกเลี่ยงได้อย่างไร. จำเป็นต้องมีช่องว่างในชื่อคอลัมน์   -  person xorpower    schedule 08.08.2011
comment
นั่นคือปัญหาแล้ว ล้อมชื่อคอลัมน์ไว้ในวงเล็บเหลี่ยมเหมือนที่ฉันทำด้านบน ไม่น่าแปลกใจที่เราไม่สามารถให้คำตอบคุณได้!   -  person Matt Hamilton    schedule 08.08.2011
comment
หวังว่าคุณจะไม่ว่าอะไร แต่ฉันได้แก้ไขคำถามของคุณเพื่อสะท้อนข้อผิดพลาดอย่างถูกต้อง และเพิ่มคำตอบ   -  person Matt Hamilton    schedule 08.08.2011
comment
ไม่เป็นไร..จะเป็นประโยชน์ต่อผู้อื่นในอนาคต   -  person xorpower    schedule 08.08.2011
comment
@Xor ด้วยการไม่ตอบสนองต่อคำขอซ้ำสำหรับค่า จริง ของ strFilter คุณจะเสียเวลาไปหลายคนในการพยายามตอบคำถามที่ ไม่มีปัญหา. เป็นเพียงคำแนะนำสำหรับอนาคต: รหัสไปรษณีย์ที่ ทำให้เกิดปัญหาจริงๆ; เนื่องจากคุณ (ตามคำจำกัดความ) ไม่เข้าใจปัญหา จึงเป็นเรื่องง่ายเกินไปที่จะลบสาเหตุที่แท้จริงออกโดยไม่ตั้งใจเมื่อโพสต์คำถาม   -  person Marc Gravell    schedule 08.08.2011


คำตอบ (1)


ปัญหาของคุณคือ "Emp Name" (ชื่อคอลัมน์) มีการเว้นวรรคและจำเป็นต้องอยู่ในวงเล็บเหลี่ยมในนิพจน์ตัวกรอง:

strFilter= strFilter+ " and [Emp Name] = '" + Session["SampleSession"].ToString() + "' ";
person Matt Hamilton    schedule 08.08.2011
comment
วงเล็บเหลี่ยมยังแก้ปัญหาชื่อแปลก ๆ เช่น 10_vces ในสถานการณ์ของฉัน - person Vít Bednář; 22.06.2021