ASP.NET EnqityDataSource WhereParameters สร้างคุณสมบัติใหม่

ฉันกำลังพยายามเติม GridView โดยใช้ EntityDataSource (โค้ดด้านหลัง) ฉันต้องสามารถเรียงลำดับ GridView ได้ อย่างไรก็ตาม เมื่อฉันเรียงลำดับ ฉันได้รับข้อผิดพลาด: ไม่มีคุณสมบัติชื่อ 'aspnet_Users.UserId1' ไม่มีอยู่ในข้อมูลเมตาสำหรับประเภทเอนทิตี ดังนั้นฉันเชื่อว่าเป็นเพราะฉันสร้างพารามิเตอร์ที่อยู่เบื้องหลังโค้ดที่อยู่ด้านหลัง:

ActiveEnqDataSource.WhereParameters.Add(new SessionParameter("aspnet_Users.UserId", TypeCode.Object, "UserName"));

รหัสเต็มคือ:

ActiveEnqDataSource.ConnectionString = db.Connection.ConnectionString;
             ActiveEnqDataSource.DefaultContainerName = "Entities";
             ActiveEnqDataSource.EntitySetName = "Enquiries";
             ActiveEnqDataSource.Include = "UserCars.CarModel.CarMake, Category, aspnet_Users";

             ActiveEnqDataSource.EnableUpdate = true;
             ActiveEnqDataSource.EnableInsert = true;
             ActiveEnqDataSource.EnableDelete = true;
             ActiveEnqDataSource.AutoGenerateWhereClause = true;


             ActiveEnqDataSource.WhereParameters.Add(new SessionParameter("aspnet_Users.UserId", TypeCode.Object, "UserName"));

มีข้อเสนอแนะอะไรบ้าง? ขอบคุณมาก! Gridview แสดงผลได้อย่างสมบูรณ์แบบ สิ่งเดียวที่ฉันไม่สามารถจัดเรียงได้ "whereParameters" ใด ๆ ที่ฉันเพิ่ม เพิ่ม 1 ให้กับคุณสมบัติ เช่น UserId1,EnquiryStatus1, ProdauctName1 ฯลฯ...


person Alex    schedule 31.03.2010    source แหล่งที่มา
comment
โดยที่พารามิเตอร์มีไว้เพื่อการกรอง ไม่ใช่เพื่อการเรียงลำดับใช่ไหม คุณกำลังพยายามเรียงลำดับ GridView ด้วย LinkButtons ใน GridViewHeader หรือไม่? หากเป็นเช่นนั้น จะเป็นประโยชน์หากคุณสามารถจัดเตรียมมาร์กอัป GridView ของคุณได้ ในรหัสที่คุณให้มาจนถึงตอนนี้ฉันไม่เห็นการเรียงลำดับเลย หรือคุณหมายความว่าคุณได้รับข้อผิดพลาดนี้ทันทีที่คุณเพิ่ม WhereParameter มันทำงานโดยไม่มีตัวกรอง Where ตามชื่อผู้ใช้หรือไม่   -  person Slauma    schedule 01.04.2010
comment
ใช่ มันทำงานได้อย่างสมบูรณ์แบบโดยไม่ต้องมีเงื่อนไขสำหรับการกรอง มาร์กอัปเป็นแบบมาตรฐาน เปิดใช้งานการเรียงลำดับโดยใช้แท็กควบคุม จริงๆ แล้วฉันได้แก้ไขมันด้วยการใส่ Where clause ไว้ในมาร์กอัป ไม่ใช่โค้ดอยู่ข้างหลัง มันได้ผล อย่างไรก็ตามคำถามยังคงอยู่ ให้เปิดว่าทำไมมันใช้งานไม่ได้จากโค้ดด้านหลัง :)   -  person Alex    schedule 01.04.2010


คำตอบ (2)


ฉันได้รับข้อผิดพลาดที่คล้ายกันเนื่องจากฉันได้เพิ่มส่วนคำสั่งที่ทุกครั้งที่โพสต์เพจกลับ การวางโค้ดของฉันที่สร้างส่วนคำสั่ง Where ภายในคำสั่ง IsPostback ช่วยแก้ไขปัญหาได้:

if (!IsPostBack) {
    // code to add where parameters
}
person Dhaulagiri    schedule 07.02.2013

ฉันได้รับข้อผิดพลาดเดียวกันเมื่อฉันใช้มาร์กอัปเพื่อกำหนดพารามิเตอร์ Where จากนั้นฉันก็เพิ่มพารามิเตอร์เดียวกันในโค้ด ที่ไหนสักแห่งในบรรทัด มีการเพิ่ม 1 ที่ส่วนท้ายของชื่อพารามิเตอร์

person dawidg    schedule 09.10.2011